代码之家  ›  专栏  ›  技术社区  ›  Dunsany

处理DynamoDB查询返回的JSON数据

  •  1
  • Dunsany  · 技术社区  · 8 年前

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

    hub\u id (编辑: 主要的,重要的 分区键)

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

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

    {“hub\U 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对象(details列)中保存的数据。上述查询返回:

    16: 44:45:PnKVrm12 未定义

    我希望它会回来:

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

    由于某些原因,我无法访问温度或sensor\u名称中的数据。

    如果你有时间的话,我会很感激你的建议。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Randy Casburn    8 年前

    你的 ProjectionExpression 在您的 forEach 循环并提供:

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

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

    `详细信息。详细信息。传感器名称'