javascript - 从 AWS.DynamoDB.DocumentClient.Scan() 调用返回输出
问题描述
我有一个函数可以返回 DynamoDB 表(事物)中的记录数:
const table = 'Things';
const region = 'us-east-1';
const profile = 'development';
process.env.AWS_SDK_LOAD_CONFIG = true;
process.env.AWS_PROFILE = profile;
const AWS = require('aws-sdk');
AWS.config.update({ region: region });
function ddb_table_has_records(table_name) {
const ddb_client = new AWS.DynamoDB.DocumentClient();
const ddb_query_parameters = {
TableName: table_name,
Select: 'COUNT'
}
const results = ddb_client.scan(ddb_query_parameters).promise();
results.then((data) => {
console.log(data.Count);
return data;
}).catch((err) => {
console.log("Error: ", err);
})
}
console.log(ddb_table_has_records(table));
当我运行此代码时,我得到以下...
PS C:\> node .\get-count-thing.js
undefined
3951
我没有从以下扫描中捕获数据;虽然,我在 console.log() 调用中看到了它:
console.log(ddb_table_has_records(table));
我在搞什么鬼?
解决方案
发布我的修复以防万一有人有同样的问题。我必须进行两项更改才能从表中检索项目;我需要...
- ...项目
ALL_ATTRIBUTES
- ...迭代返回的项目集合
以下是我的更改功能:
function ddb_table_has_records(table_name) {
const ddb_client = new AWS.DynamoDB.DocumentClient();
const ddb_query_parameters = {
TableName: table_name,
Select: 'ALL_ATTRIBUTES'
}
const results = ddb_client.scan(ddb_query_parameters).promise();
results.then((data) => {
console.log(data.Count);
data.Items.forEach((thing) => {
console.log(thing);
});
}).catch((err) => {
console.log("Error: ", err);
})
}
推荐阅读
- python - 通过引用添加列表
- javascript - 来自条纹的输入卡元素的JQuery选择器没有得到任何结果
- php - 在 SQL 中按 2 个条件排序?
- html - 如何使用悬停覆盖图像格式化文本
- javascript - 是否可以使用 googles geocode api 进行缩放?
- c++ - 使用 NOLINT 来抑制 clang-tidy。我怎样才能压制压制?
- node.js - 如何从 Node.js 内部正确执行 cd 命令?
- mysql - 如何在 mysql 查询中显示“转发”之类的转发?
- node.js - 在 Mac 上安装 Angular 时出错
- python - Python 如何检查缩进错误?