簡體   English   中英

如何在 Alexa 技能中讀取和使用來自 DynamboDB 的數據

[英]How to read and use data from DynamboDB in an Alexa skill

我正在構建一個 Alexa 技能,它從 DynamoDB 表中檢索一些數據,然后需要在另一個 function 或語音 output 中使用它。 我的想法是使用 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 function,我不確定我會將await放在哪里或如何將數據返回到.speechoutput() 我曾嘗試將await放在docClient function 前面,但它似乎不起作用。

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();

看起來你可能沒有得到異步/等待。

Await 讓 JS 等待,直到 promise 被解析並獲得解析返回的任何內容。

getDataPromise包含解析后的docClient.getParams()操作的結果,應該是數據 object。

AFAICT,您的代碼失敗,因為您試圖“然后”一個普通的舊數據 object。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM