DynamoDB查询中未定义的地图列表返回

问题描述

我正在查询DynamoDB。它具有一个名为“多个单位”的属性,其结构如下:List [Map {Map {S {},S},...]

我在本地测试了一个lambda:

module.exports.getByAddress = async (event) => {
  const params = {
    TableName: process.env.tableName,Key: { 
      Address: event.pathParameters.address
    }
  };
  var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
  docClient.get(params).promise().then(
    returnResult => console.log(returnResult)
  )
}

这是输出:

Item: {
...
license: '',Coordinates: { lng: '-71.075985',lat: '42.346096' },'Multiple Units': [ [Object],[Object],[Object] ],...
}

当我尝试console.log Multiple Units列表时,我不确定。 在阅读有关DynamoDB get / getItem的文章时,我猜想它与异步有关,但是我无法配置将导致正确输出的更改。

解决方法

根据您的评论,您提到执行undefined时得到console.log(returnResult['Multiple Units'])

仔细查看console.log(returnResult)正在打印什么:

Item: {
   ...
   license: '',Coordinates: { lng: '-71.075985',lat: '42.346096' },'Multiple Units': [ [Object],[Object],[Object] ],...
}

请注意,它正在使用密钥map打印Item。因此,要获取您的数据,请尝试console.log(returnResult.Item['Multiple Units'])

您可以查看DynamoDB SDK API以获得有关get通话结果的更多信息。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...