【问题标题】:Dealing with JSON data returned from a DynamoDB query处理从 DynamoDB 查询返回的 JSON 数据
【发布时间】:2018-04-04 16:01:14
【问题描述】:

我将数据存储在 DynamoDb 表中。我有 3 列:

hub_id(编辑:primary 分区键)

on_time(排序键 - 这是存储为字符串的日期时间)

详细信息这包含我的 JSON 数据(来自传感器的信息):

{“hub_id”:{“S”:“PnKVrm12”},“温度”:{“S”:“23”},“传感器名称”:{“S”:“技术实验室”}}

使用 react-native 和 aws amplify 我可以使用以下代码查询表并返回正确的行数:

  // setup query params
var params = {
TableName : "hiddenprojectv-mobilehub-1542262168-hidden",
ProjectionExpression:"hub_id, details.temperature, details.sensor_name",
KeyConditionExpression: "hub_id = :hid",
ExpressionAttributeValues: {
    ":hid":"PnKVrm12"
    }
};


//execute query using params
db.query(params, function(err, data) {
if (err) {
    console.log("Unable to query. Error:", JSON.stringify(err, null, 2));
} else {
    console.log("Query succeeded.");
    data.Items.forEach(function(details) {
        console.log(details.hub_id,details.sensor_name); 

    });
}
});

但我正在努力获取 Json 对象(详细信息列)中保存的数据。上面的查询返回:

16:44:45:PnKVrm12 未定义

我预计它会返回:

16:44:45:PnKVrm12 技术实验室

由于某种原因,我永远无法访问温度或传感器名称中的数据。

如果您有时间,我将不胜感激。

【问题讨论】:

  • details.hub_id 不可能以给定的数据结构返回 PnKVm12。解释一下?
  • console.log(data) 在回调函数中并与我们分享。
  • 按要求截取 console.log(data):pastebin.com/mXaE1Zaq
  • 对。 hub_id 是详细信息,但 sensor_namedetails.details
  • 完美!感谢您的帮助。

标签: javascript json react-native amazon-dynamodb


【解决方案1】:

您的ProjectionExpression 在您的forEach 循环中被访问并提供:

details = { hub_id: 'x', details: { temperature: 'x', sensor_name: 'x' } };

您没有正确使用数据结构。要访问 sensor_name 属性,您必须使用:

`details.details.sensor_name'

【讨论】:

    猜你喜欢
    • 2016-03-25
    • 2017-09-10
    • 2018-05-13
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 2013-10-10
    相关资源
    最近更新 更多