【问题标题】:Parse DynamoDB List DataType解析 DynamoDB 列表数据类型
【发布时间】:2020-05-01 08:18:59
【问题描述】:

我正在构建一个 Angular 8 应用程序,并将 JSON 数据存储在 DynamoDB 中的列表数据类型中。我可以很好地插入记录并且可以查询表中的数据,但是我在获取列表数据类型中的数据时遇到了问题。

这是它在控制台日志中的样子

我在获取字符串数据值时没有任何问题,只有 List 数据类型中的嵌套数据。

【问题讨论】:

  • 您能详细说明您对 List 数据类型有什么问题吗?
  • 我遇到的问题是我无法解析列表类型数据并分配给变量。我有一个重复行,用于生成第一张图像中看到的数据。如果用户想要编辑某些内容,我需要能够重新填充重复行。我在解析和获取字符串数据时没有任何问题,它只是第二张图片中显示的列表数据。

标签: arrays json angular typescript amazon-dynamodb


【解决方案1】:

如果您的问题与解析从 dynamo 返回的对象有关,您可以使用 DynamoDB 转换器

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/Converter.html#unmarshall-property

这会将返回的 dynamo 记录转换为 json 记录。

另外,如果您使用的是 sdk,请考虑使用 https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html,它会自动将 dynamo 记录转换为 json 记录。

【讨论】:

  • 我实际上并没有使用 sdk 来查询数据,而是使用 angular http get call to a post 。是否可以在不使用 sdk 的情况下解析数据?下面是 api 网关中的查询: { "TableName": "Purchases", "IndexName": "AID-PurchaseStatus-index", "ProjectionExpression": "Column List", "KeyConditionExpression": "AID = :v1", "ExpressionAttributeValues": { ":v1": { "S": "$input.params('aid')" } }, "ScanIndexForward": true, "Limit": 10000 }
  • 啊,很有趣,您可以使用集成响应在 dynamo 中映射您的数据。有一些例子aws.amazon.com/blogs/compute/…medium.com/@rafacampana/… 但我认为没有通用转换器。我认为最好的选择是在 API GW 和 Dynamo 之间使用 Lambda
  • 那么就没有办法使用 JSON 遍历客户端的对象了吗?最多我有 2 行或 3 行来迭代。 var data = purchasedetail; console.log(data.length); console.log(data); console.log(data[i].M.BillType.S); 返回长度,数据显示两行,如上图所示,但是当我尝试获取 BillType 时,出现以下错误:TypeError: Cannot read property 'S' of undefined at AccountComponent.push../src/app/crm/accounts/account.component.ts.AccountComponent.updatePurchase...
  • 从你的截图中应该寻找billType而不是BillType,所以console.log(data[i].M.billType.S)
猜你喜欢
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 2020-01-12
  • 1970-01-01
  • 2019-11-06
  • 2021-07-17
  • 1970-01-01
相关资源
最近更新 更多