AWS DynamoDB 扫描 returns 项数组 - 如何通过主键请求键值字典?

AWS DynamoDB scan returns Item array - how to request Key-Value dictionary by primary key?

为了避免在获取数据时出现延迟,我想在 javascript 应用程序启动时 download/cache 我的整个 DynamoDB(10MB,120'000 个条目,每个条目 3 个值)所以一些数据可以在更新数据被请求时立即显示并在不久之后显示(以防条目在缓存时间之后更新)。

对于初始下载,该应用程序向我的 lambda 函数发出了一个 httprequest,该函数又调用

await dynamo.scan({ TableName: tableName }).

此 return 的响应如下所示:

{"Items":[{"key":"personA","address":"ABC"},{"key":"personB","address":"XYZ"}],"Count":2,"ScannedCount":2}

在我的应用程序中,我想显示特定人的地址。由于 return 类型是一个数组,恐怕我必须遍历每个条目并检查 entry['key']='personA'。我更愿意做类似 Items['personA'] 的事情,因为我已将 key 设置为 DynamoDB 的主键。

我可以使用其他操作来接收由数据的 key 列索引的字典吗?

所以基本上我的目标是获得

{"Items":{"personA":{"address":"ABC"}},{"personB":{"address":"XYZ"}},"Count":2,"ScannedCount":2}

(以 key 的值作为实际键而不是相当不方便的数组的字典)

以防万一我的用例听起来很危险 - 该应用程序不适用于零售客户,无论如何都不应该访问此数据的任何人都无法使用它。

Is there another operation that I can make use of in order to receive a dictionary indexed by the key column of the data?

不,DynamoDB 目前没有这样的 API,您可以选择将数据转换为您描述的格式。


所以基本上你有以下两个选择:

  1. 使用扫描响应并自行构建 index/dictionary。

    • 优点:你可以复用这个索引来查找其他人
    • 缺点:建立初始索引可能会很慢,因为它需要完整的列表遍历
  2. 通过提供主键使用 GetItem 检索数据。