gpt4 book ai didi

Node.js 未按预期输出

转载 作者:太空宇宙 更新时间:2023-11-04 03:18:21 24 4
gpt4 key购买 nike

我很难让我的 Node.js 代码按我想要的方式运行。它用于 AWS Lambda 函数。

代码扫描并输出 DynamoDB 中的整个表。问题是我几乎从来没有在控制台中输出 readdb 函数中的 console.log("DB SCANNED!") (并且没有值加载到“items”)。

var AWS = require('aws-sdk');
AWS.config.update({region: 'eu-west-1'});
var ddb = new AWS.DynamoDB({apiVersion: '2012-10-08'});

var table = "TABLE";

var paramsRead = {
TableName: table,
};


exports.handler = async (event) => {

await readdb();
console.log("END");

};


function readdb(){
ddb.scan(paramsRead, function(err, data) {
if (err) {
console.log("Error reading DynamoDB", err);
} else {
console.log("DB SCANNED!");
var items = JSON.stringify(data.Items);
let response = {
statusCode: 200,
body: items,
};
}
}
);
}

最佳答案

Lambda 完成得太快,因为您实际上没有从 readdb 返回任何内容到 await

您需要返回一个Promise

function readdb() {
return new Promise((resolve, reject) => {
ddb.scan(paramsRead, (err, data) => {
if (err) {
console.log("Error reading DynamoDB", err);
reject(err);
} else {
console.log("DB SCANNED!");
var items = JSON.stringify(data.Items);
resolve({
status code: 200,
body: items
});
}
})
});
}

...
const response = await readdb();

关于Node.js 未按预期输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53469915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com