【问题标题】:Nodejs 10: Why does DynamoDB put function giving success multiple timesNodejs 10:为什么 DynamoDB 函数多次成功
【发布时间】:2020-03-03 17:46:49
【问题描述】:

我正在编写 node js 10.x lambda 函数以将详细信息放入 DynamoDB 表中。

下面是代码

const AWS = require('aws-sdk');
var db = new AWS.DynamoDB.DocumentClient();
var tableName="xyz";

exports.handler = async (event) => {
    // TODO implement
    console.log("Event: "+ JSON.stringify(event));
    
    var response = {
        statusCode: 200,
        "headers": {
            "Access-Control-Allow-Origin" : "*",
            "Access-Control-Allow-Credentials" : true
        },
    };
    await db.put({
        TableName: tableName,
        Item: {
            userid: event.userid,
        }
    }, (error, data) => {      
        if (error) {
            console.log("error:"+ error);
        }
        else{
            console.log("Success");
        }
    }).promise();
    
    return response;
};

我对成功返回的随机数很友好

输出执行1

2019-11-07T07:03:45.388Z    f451dfc1-01ea-41d0-a998-945cb0f18be1    INFO    Success
2019-11-07T07:03:45.510Z    f451dfc1-01ea-41d0-a998-945cb0f18be1    INFO    Success
2019-11-07T07:03:45.511Z    f451dfc1-01ea-41d0-a998-945cb0f18be1    INFO    Success

输出执行2

2019-11-07T07:08:19.270Z    3ce51f5d-bbbc-4dd6-b46f-2149ee9bb9cf    INFO    Success

输出执行3

2019-11-07T07:08:27.410Z    2625bba5-b8e1-40e4-8704-7c0d486f6dff    INFO    Success
2019-11-07T07:08:27.431Z    2625bba5-b8e1-40e4-8704-7c0d486f6dff    INFO    Success

** 有谁知道这个问题的原因吗?

我对 node js 10.x 比较陌生。所以如果我错过了代码中的某些内容,请帮助我 **

【问题讨论】:

  • 你怎么称呼这个handler函数?
  • 在 AWS Lambda UI 控制台中使用测试事件
  • 您所指的随机字符串例如2625bba5-b8e1-40e4-8704-7c0d486f6dffawsRequestId – The identifier of the invocation request.
  • @error404 我知道这一点,而不是指请求标识符。我指的是执行后成功消息的数量

标签: node.js amazon-web-services aws-lambda amazon-dynamodb aws-serverless


【解决方案1】:

你同时使用callback and promise,移除回调。

你可以试试

exports.handler = async (event, context) => {
    const params = {
        TableName: tableName,
        Item: {
            userid: event.userid,
        }
    };

    try {
        const data = await dynamoDB.put(params).promise();
        console.log("Data: ", data);
    } catch(error) {
        console.error("Error:", error);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-14
    • 2017-07-15
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多