【问题标题】:How to read and use data from DynamboDB in an Alexa skill如何在 Alexa 技能中读取和使用来自 DynamoDB 的数据
【发布时间】:2020-11-26 05:10:41
【问题描述】:

我正在构建一个 Alexa 技能,它从 DynamoDB 表中检索一些数据,然后需要在另一个函数中使用它或作为语音输出。我的想法是使用 async/await,但我不知道该怎么做。

var AWS = require('aws-sdk');
AWS.config.update({region: 'us-west-2'});

var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});


var params = {
 TableName: 'someTableName',
 Key: {'UserID': '1'}
};

var getDataPromise = docClient.get(params).promise();

getDataPromise.then(
  function(data) {
    console.log(data.Item);  // I need to return data.Item to somehow use in .speechoutput()
  }
).catch(
  function(err) {
    console.log(err);
  }
);

如果我创建一个async 函数,我不确定将await 放在哪里或如何将数据返回给.speechoutput()。我尝试将await 放在docClient 函数前面,但它似乎不起作用。

var AWS = require('aws-sdk');
AWS.config.update({region: 'us-west-2'});

var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

async function getData() {
  var params = {
   TableName: 'someTableName',
   Key: {'UserID': '1'}
  };

  var getDataPromise = await docClient.get(params).promise();

  getDataPromise.then(
    function(data) {
      console.log(data.Item);  // I need to return data.Item to somehow use in .speechoutput()
    }
  ).catch(
    function(err) {
      console.log(err);
    }
  );
}

getData();

【问题讨论】:

    标签: javascript promise async-await amazon-dynamodb alexa


    【解决方案1】:

    看起来你可能没有得到 async/await。

    Await 让 JS 等到一个 promise 被解决,然后得到解决时返回的任何东西。

    getDataPromise 包含docClient.getParams() 操作解析后的结果,它应该是数据对象。

    AFAICT,您的代码失败,因为您试图“然后”一个普通的旧数据对象。

    【讨论】:

      猜你喜欢
      • 2019-07-28
      • 2019-08-07
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 2018-10-18
      相关资源
      最近更新 更多