首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dynamodb.put().promise()不返回put对象

dynamodb.put().promise()不返回put对象
EN

Stack Overflow用户
提问于 2019-03-14 15:54:34
回答 3查看 27.1K关注 0票数 25

我正在尝试使用异步/等待功能,涉及aws和dynamo。下面是一个示例,说明如何将一个对象预先等待,正如您在回调中看到的,您可以访问包含put对象的数据。但是,在使用异步并承诺结果为空对象的第二个代码块中,有什么想法吗?

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

非承诺版

代码语言:javascript
复制
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));
    }
});

承诺异步版本-假设包装功能被标记为异步

代码语言:javascript
复制
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) 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-14 19:56:10

根据文档,如果您想要拿回什么东西,就必须使用ReturnValues

票数 15
EN

Stack Overflow用户

发布于 2019-03-14 18:09:01

当您使用承诺时,您应该使用.then()和.catch()来处理返回的允诺对象。如果你看一下文档,您的请求应该如下所示:

代码语言:javascript
复制
dynamoDb.put(params).promise()
  .then(function(data) {
    console.log(data);
  })
  .catch(function(err) {
    console.log(err);
  });

这还将帮助您查看是否有任何错误(与尝试/捕捉围绕等待的想法相同,但语法更清晰)。

票数 7
EN

Stack Overflow用户

发布于 2020-07-16 10:58:31

我试过ReturnValues: 'ALL_OLD',但在async await中没有结果。

下面是代码的一部分:

代码语言:javascript
复制
const answersParams = {
          TableName: ANSWERS_TABLE,
          Item: {
            answersId,
            answers,
            userId,
            quizId,
          },
          ReturnValues: 'ALL_OLD',
        };

        try {
          const createdAnswres = await db.put(answersParams).promise();

          return {
            statusCode: 201,
            body: JSON.stringify(createdAnswres && createdAnswres.Item),
          };
        } catch (error) {
          return {
            statusCode: 500,
            body: 'failed to save user answers',
          };
        }
      }

因此,我不得不向db添加另一个请求:

代码语言:javascript
复制
const createdAnswres = await db.get({
              TableName: ANSWERS_TABLE,
              Key: { answersId },
            })
            .promise();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55166921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档