Nodejs 10: почему DynamoDB ставит функцию, дающую успех несколько раз - PullRequest
0 голосов
/ 07 ноября 2019

Я пишу узел js 10.x лямбда-функции для помещения деталей в таблицу 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

** кто-нибудь знает причину этой проблемы?

Я относительно новичок в узле js 10.x. поэтому, пожалуйста, помогите мне, если я что-то пропустил в коде **

1 Ответ

2 голосов
/ 07 ноября 2019

вы используете обратный вызов и обещание одновременно, удалите обратный вызов.

Вы можете попробовать что-то вроде

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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...