异步Lambda函数在调用DynamoDB时返回null

时间:2019-09-24 02:20:39

标签: aws-lambda dynamodb-queries

我是异步函数和诺言的新手。我编写了一个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();
};

1 个答案:

答案 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;