我是异步函数和诺言的新手。我编写了一个Lambda函数,该函数查询DynamoDB表并返回结果。该代码正在回调成功块内执行,我能够在console.log(res)行的日志中看到响应。但是Lambda响应始终显示为null,即根本不返回下面的响应对象。我能够使用同步Lambda函数(通过回调返回数据)来完成这项工作。你能建议我可能做错了什么吗?
const doc = require('dynamodb-doc');
var dynamodbclient;
const tablename = process.env.TABLE_NAME;
exports.handler = async(event) => {
if (!dynamodbclient) {
dynamodbclient = new doc.DynamoDB();
}
let id = event.params.id;
let queryparams = {
TableName: 'table-name',
Key: { id: id }
};[![enter image description here][1]][1]
var getItemsCallback = (err, res) => {
console.log('inside');
if (err) {
}
else {
console.log('success');
console.log(res);
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
}
};
var item = await dynamodbclient.getItem(queryparams, getItemsCallback).promise();
};
答案 0 :(得分:0)
在承诺解决后,您的回调仍在执行,因此lambda将终止,您的回调将不会完成。
尝试:
try {
const item = await dynamodbclient.getItem(queryparams).promise();
} catch (err) {}
console.log('success');
console.log(item);
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;