目前,Ruby AWS SDK中的ItemCollection#查询方法返回整个数据集。我查看了Ruby AWS SDK源代码中的任何分页可能性,但最接近分页的选项是:limit
,没有分页。根据亚马逊的DynamoDB API(HTTP,而不是Ruby)查询操作的文档表明,可能会对响应键LastEvaluatedKey
进行分页:
查询操作停止的项的主键,包括先前的结果集。使用此值可以在新请求中启动不包含此值的新操作。 整个查询结果集完成后,LastEvaluatedKey为null(即操作处理“最后一页”)。
所以我可以通过添加:limit
选项进行分页,然后在我的上一个Item
之后对范围值进行下一次查询,但之后我不知道总数是多少,除非我做一个完整的查询。
是否有更好/更简单的方法来实现分页?
答案 0 :(得分:1)
根据您的需求,构建完整的寻呼机可能需要两个请求,请参阅Query and Scan in Amazon DynamoDB,特别是Count and ScannedCount:
Amazon DynamoDB扫描和查询API使用两个计数值 不同的目的。
在请求中,如果您需要Amazon,请将Count参数设置为true DynamoDB 提供与扫描匹配的项目总数 过滤或查询条件,而不是匹配项的列表。
在回复中,Amazon DynamoDB会返回一个Count值 匹配请求中的项目。 如果匹配项目为扫描过滤器 或查询条件超过1MB,Count包含部分计数 与请求匹配的项目总数。为了得到完整的数量 与请求匹配的项目,在后续使用LastEvaluatedKey 请求。重复该请求,直到Amazon DynamoDB不再返回 LastEvaluatedKey。
[强调我的]
也就是说,为了避免最初的复杂逻辑,您可能希望事先查询匹配项目的数量,然后仅按需请求特定页面。
祝你好运!