【发布时间】:2019-01-12 13:22:30
【问题描述】:
使用 javascript aws-sdk 并通过文档客户端查询 dynamodb 表。该表包含 10 个元素 和查询 limit = 5。
对于每个请求,我使用 LastEvaluatedKey 构建一个新查询并发送一个新请求,结果如下:
first request --> {Items: Array(5), Count: 5, ScannedCount: 5, LastEvaluatedKey: {…}}
second request --> {Items: Array(5), Count: 5, ScannedCount: 5, LastEvaluatedKey: {…}}
third request --> {Items: Array(0), Count: 0, ScannedCount: 0}
据此doc
如果结果包含 LastEvaluatedKey 元素,请继续执行步骤 2。 如果结果中没有 LastEvaluatedKey,则没有 更多待检索项目
它应该在第二个请求中不返回 LastEvaluatedKey,因为没有更多元素,但它返回一个在第三个请求中发送到空结果的元素。
当我尝试使用 limit = 4 时,一切都按预期工作
first request --> {Items: Array(4), Count: 4, ScannedCount: 4, LastEvaluatedKey: {…}}
second request --> {Items: Array(4), Count: 4, ScannedCount: 4, LastEvaluatedKey: {…}}
third request --> {Items: Array(2), Count: 2, ScannedCount: 2} <--- there is no LastEvaluatedKey as expected
那么这里发生了什么?
【问题讨论】:
-
如果您在这里没有得到答案,我建议您在 AWS 论坛上提出这个问题。
-
好的,谢谢,我会的。
-
我假设当 aws 达到限制“5”时,它只会记录密钥,并且由于它不会向前看,它不知道还有多少项目需要扫描。相当简单的逻辑
-
@CanSahin 这是我想知道的,如果它是“根据文档”预期的结果,或者不是。我本来希望有来源的评论。
标签: amazon-web-services pagination nosql amazon-dynamodb