как заставить AWS dynamo db работать в nodejs при использовании async await

#javascript #node.js #amazon-web-services #amazon-dynamodb

#javascript #node.js #amazon-веб-сервисы #amazon-dynamodb

Вопрос:

У меня есть этот пример кода создания данных dynamo db

 var AWS = require("aws-sdk");
let awsConfig = {
    "region": "ap-south-1",
    "endpoint": "http://dynamodb.ap-south-1.amazonaws.com",
    "accessKeyId": "xxxxxxxxxxxxxxxxx", "secretAccessKey": "xxxxxxxxxxxxxxxxxxxxxxx"
};
AWS.config.update(awsConfig);

let docClient = new AWS.DynamoDB.DocumentClient();

console.log(docClient);

let save = function () {

    var input = {
        "task": "example-1@gmail.com"
    };
    var params = {
        TableName: "todos",
        Item:  input
    };
    docClient.put(params, function (err, data) {

        if (err) {
            console.log("error - "   JSON.stringify(err, null, 2));                      
        } else {
            console.log(data);
        }
    });
}



save();
 

Теперь я преобразовал это в форму асинхронного ожидания

 const create = async (docClient,payload,tableName) =>{
    try {
        console.log(payload);
        const createdDoc = await docClient.put({TableName:tableName,Item:payload})
        console.log(createdDoc);
    } catch (error) {
       console.log(error); 
    }
}
        


create(docClient,{"task":"sample"},"todos")
 

Этот код не выдал мне ошибку и не добавил данные в таблицы dynamo DB

Комментарии:

1. Возвращает ли put обещание? Если нет, то оберните весь вызов в обещание и вызовите resolve() в обратном вызове, когда закончите.

Ответ №1:

Вы должны вызвать .promise() результат .put() вызова:

 const createdDoc = await docClient.put({ … }).promise();
 

Смотрите Документы для AWS.DynamoDB.DocumentClient.put() и AWS.Request.promise() .