无法在节点js中使用async / await从dynamo db操作中获取值

时间:2018-10-29 14:31:09

标签: node.js amazon-web-services async-await aws-lambda

最近,AWS将lambda运行时环境升级到Node js 8.10。我创建了一个使用async / await操作的lambda函数,它的工作方式是在对dynamodb表进行输入时,使用表的主键将一条消息发送到sns主题,作为消息的一部分触发另一个lambda函数。当执行第二个lambda函数并使用主键查询dynamodb表时,我无法从等待中获取值。在控制台日志中打印值时,它返回undefined。我不需要在返回键中传递任何值,所以我没有用它传递任何值。下面是代码段。

let AWS = require("aws-sdk");
let docClient = new AWS.DynamoDB.DocumentClient();
exports.handler = async (event) => {
    // TODO implement
    let tableName = "vedablogs";
    let idvalue = event.Records[0].Sns.Message;
    let id = idvalue.toString();

    let params = {
                TableName: tableName,
                KeyConditionExpression: "#id = :idvalue",
                ExpressionAttributeNames: {
                    "#id": "id"
                },
                ExpressionAttributeValues: {
                    ":idvalue": id
                }
            };

     let queryParams = await docClient.query(params).promise();
     console.log('queryParams'+queryParams.Item);
     return;

};

1 个答案:

答案 0 :(得分:0)

任何面临此问题的人,解决方案是使用项而不是项。您可以按以下步骤控制台日志值。

 console.log("query params is>"+queryParams.Items);
  queryParams.Items.forEach(function(item) {
        console.log('items is'+JSON.stringify(item));
    });