我有一个带有NodeJS 10.x的AWS Lambda。此Lambda尝试基于“ FilterExpression”扫描DynamoDB表。我正在使用DocumentClient执行“扫描”操作。尽管使用了各种方法,但我仍然无法读取和迭代生成的对象。
我尝试使用以下方式:
(1) var flatData = AWS.DynamoDB.Converter.unmarshall(itemdata);
(2) var flatData = AWS.DynamoDB.Converter.output({"M":itemdata});
(3) var flatData = AWS.DynamoDB.Converter.output({"M":itemdata});
(1)和(3)工作,即当我console.log flatData时,我得到以下信息:
{来源:未定义,
status_history:未定义,
r_id:未定义,
external_note:未定义,
...
}
DynamoDB表具有3条与我正在使用的FilterExpression匹配的记录。 NodeJS代码还会迭代3次,但是具有如上所述的值。
所有这些键都有值。我想知道如何获取上面看到的键的值。我尝试了JSON.stringify(),JSON.parse()却没有任何运气。 顺便说一句,我正在为我的Lambda采用这种方法: exports.handler =函数(事件,上下文,回调){...
答案 0 :(得分:2)
您无需将其转换为普通的javascript对象,因为响应将位于普通的javascript对象中。而且我不希望使用扫描操作,因为它将消耗更多的RCU。进行查询操作。
TLDR:
扫描的输出响应如下(AWS Dynamo Link)
output
您期望的数据库获取结果将在“ Items”数组中。并且输出将不是Dynamodb JSON格式。因此,无需使用他们的工具来解析数据。
答案 1 :(得分:0)
我犯了一个非常基本的错误,因为我尝试了各种选择。 我要做的只是以下事情:
data.Items.forEach(function(itemdata) {
.....
itemdata.status_history
itemdata.r_id