首页 > 解决方案 > 如何在函数外使用 DynamoDB DocumentClient().get() 数据

问题描述

我知道以前有人问过这个问题,但我一直无法找到明确的答案。

从 DynamoDB 中的表中检索数据后,我希望能够将该数据存储在一个变量中,以便在docClient函数外部使用。我认识到我的代码设置方式,它会在完成获取数据之前尝试console.log()我的变量。userData我相信我需要使用async/await,但我不确定如何使用。我对异步 JavaScript 不是很熟悉。使用此代码的具体示例将非常有帮助。谢谢你帮我看这个!

var AWS = require('aws-sdk');
AWS.config.update({region: 'us-west-2'});
var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

var userData;

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

docClient.get(params, function(err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data);
    userData = data.Item;
  }
});

console.log(userData); // Output: undefined

标签: javascriptamazon-web-servicesasynchronousasync-awaitamazon-dynamodb

解决方案


调用时docClient.get(...),也调用.promise()返回值,通过 等待异步值await。当结果返回给您时,项目数据将在(可能未定义的)Item属性中。最后,我希望您想查看对象中的内容,因此下面的代码会检查结果。

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

const result = await docClient.get(params).promise();
const userData = result.Item;

console.log(util.inspect(userData));

以上所有内容都必须在一个async函数中完成。


推荐阅读