首页 > 解决方案 > dynamodb.put().promise() 不返回 put 对象

问题描述

我正在尝试使用关于 aws 和 dynamo db 的 async/await 功能。下面是一个如何在异步等待前放置对象的示例,正​​如您在回调中看到的那样,您可以访问包含放置对象的数据。然而,在使用 async 和 promise 的第二个代码块中,结果是一个空对象,有什么想法吗?

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.03.html

非承诺版本

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

var table = "Movies";

var year = 2015;
var title = "The Big New Movie";

var params = {
    TableName:table,
    Item:{
        "year": year,
        "title": title,
        "info":{
            "plot": "Nothing happens at all.",
            "rating": 0
        }
    }
};

console.log("Adding a new item...");
docClient.put(params, function(err, data) {
    if (err) {
        console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
    } else {
        console.log("Added item:", JSON.stringify(data, null, 2));
    }
});

Promise async 版本 - 假设包装函数被标记为异步

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

var table = "Movies";

var year = 2015;
var title = "The Big New Movie";

var params = {
    TableName:table,
    Item:{
        "year": year,
        "title": title,
        "info":{
            "plot": "Nothing happens at all.",
            "rating": 0
        }
    }
};
const result: any = await dynamoDb.put(params).promise()
console.log(result) 

标签: javascriptnode.jsamazon-web-servicesamazon-dynamodbaws-sdk-js

解决方案


根据文档ReturnValues,如果你想要一些东西,你必须使用。


推荐阅读