1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 这段代码本身有问题.
如果您使用instance profile在 EC2 中的 nodejs v16.13.2 中按原样运行,则会出现完全相同的错误。
您的代码的问题在于同时使用了Callback function和Promise。
您不应同时使用Callback function和Promise,因为函数签名不匹配。
请清理你的代码,删除不必要的等待,异步,最重要的是删除你的回调闭包,我建议你添加错误处理逻辑,否则它可能会导致你的应用程序崩溃。
docClient.query(params3).promise().then((data1) => {
console.log(data1);
}, (err) => {
console.error((err));
});
您可以参考如何在 AWS SDK 此处 中正确使用 promise。
最后,我建议您花时间阅读有关 Promise 的内容。因为即使您解决了我指出的问题,您的代码仍然无法运行,因为您对 GetCredentials()
进行了 API 调用,您似乎希望返回一个Promise,但您没有这样做。
如果您希望调用 GetCredentials().then()
,您应该在 GetCredentials 函数中执行此操作,而不是之前的代码块 -
return docClient.query(params3).promise();
供您参考,您的代码应如下所示(我没有修复您的命名,您也应该这样做)
const AWS = require('aws-sdk');
var docClient = new AWS.DynamoDB.DocumentClient({region: 'us-east-1'});
async function GetCredentials(){
//var identifier = "test-asassa";
var params3 = {
TableName: 'MyTable',
ExpressionAttributeNames: { '#var1': 'var1' },
KeyConditionExpression: '#var1 = :var1',
ExpressionAttributeValues: {
':var1': 'test'
}
}
return docClient.query(params3).promise();
};
GetCredentials().then( (data) => {
console.log(data);
}, (err) => {
console.error(err);
});
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前