javascript - 如何在函数外使用 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
解决方案
调用时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
函数中完成。
推荐阅读
- angular - Angular Routing:如何在新页面上呈现子级
- arm - 如何在 ARM cortex M3 设备中进行 64 位除法
- android - 如何解决生成同名'Lad;' 当给定一个新的缩小名称错误Android时
- regex - 谷歌表格过滤器排除有条件的重复项
- git - 写库的时候,是不是应该把TypeScript生成的JavaScript文件放到gitignore里面?
- jquery - 如何将 c# DataTable 传递给 jquery DataTable
- c# - LINQ中的字符串排序
- asp.net - “如何修复‘实体类型的实例’无法跟踪,因为键值‘{TypeId: 1}’的另一个实例已被跟踪。
- java - 使用 Apache Commons 和 Java FTP 下载后 Word 文档无法打开
- hibernate - Spring Data JPA:保存在一次事务中在父母之间移动孩子的父母列表