2

我正在使用新的 gcloud-java API(https://github.com/GoogleCloudPlatform/gcloud-java/tree/master/gcloud-java-datastore/src/main/java/com/google/cloud/datastore)使用 Cloud Datastore。我的具体问题是关于使用 GQL 进行游标分页。我能够使用游标一次一页地向前翻阅结果,但向后翻页却没有任何运气。

示例场景:

假设我有 20 个实体,ID 为 1 到 20。我的页面大小为 5。一旦我在第三页(ID 11 到 15),如果我需要返回一页;即检索 ID 6 到 10,正确的 GQL/示例代码是什么?同样,我不喜欢将偏移量与数字一起使用,而是想使用游标。

据我所知(实际测试过),看起来需要跟踪每个页面的开始/结束光标,因为它们向前导航,然后在需要返回时使用保存的光标。我只是想确定这是否是正确/唯一的方法,或者有更简单的方法来实现这一点。

在此先感谢您的帮助。

4

1 回答 1

3

如果您向原始查询添加按键排序(附加到“order by”子句的末尾),您应该能够反转每个属性的排序顺序并使用原始查询中的最新游标来获得反向结果。

假设您已经遍历了前向查询中的一些值QueryResults。您可以调用QueryResults'scursorAfter()方法,该方法将返回一个光标,该光标指向您从原始查询中看到的最后一个结果。现在您可以使用该游标作为开始游标发出一个新查询(在每个属性上使用相反的排序顺序,包括 key 属性)。您可能希望跳过第一个结果,因为它将是您从原始查询中看到的最后一个结果。

于 2016-06-15T20:10:28.090 回答