google-app-engine - 使用光标向后分页有效但缺少项目

标签 google-app-engine app-engine-ndb

来自 looking for ideas/alternatives to providing a page/item count/navigation of items matching a GAE datastore query ,我可以找到如何通过 REVERSING ORDER 使用单个光标向后导航页面的提示。

class CursorTests(test_utils.NDBTest):

  def testFirst(self):
    class Bar(model.Model):
      value = model.IntegerProperty()

    self.entities = []
    for i in range(10):
        e = Bar(value=i)
        e.put()
        self.entities.append(e)

    q = Bar.query()
    bars, next_cursor, more = q.order(Bar.key).fetch_page(3)
    barz, another_cursor, more2 = q.order(-Bar.key).fetch_page(3, start_cursor=next_cursor)
    self.assertEqual(len(bars), len(barz))

不幸的是,它因这个错误而失败。

Traceback (most recent call last): File "/Users/reiot/Documents/Works/appengine-ndb-experiment/ndb/query_test.py", line 32, in testFirst self.assertEqual(len(bars), len(baz)) AssertionError: 3 != 2

是的,反向查询缺少边界中的项目。

bars = [Bar(key=Key('Bar', 1), value=0), Bar(key=Key('Bar', 2), value=1), Bar(key=Key('Bar', 3), value=2)] 
bars = [Bar(key=Key('Bar', 2), value=1), Bar(key=Key('Bar', 1), value=0)]

我该如何解决这个问题?

最佳答案

好的,这是官方答案。您需要“反转”光标,如下所示:

rev_cursor = cursor.reversed()

我自己也不知道。 :-( 我会确保这显示在 fetch_page() 的文档中。

关于google-app-engine - 使用光标向后分页有效但缺少项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10240454/

相关文章:

java - 部署到 Google App Engine

java - 在谷歌应用程序引擎上使用java将html转换为图像

java - JDOQL中如何实现SQL IN查询?

python - 改变 ndb 重复属性

eclipse - MacOS-GoClipse GAE- "open build: No such file or directory"

google-app-engine - 如何在 ndb 重复结构化属性中查找实例

python - 测试 ndb 实体是否已放入数据存储

python - Google Appengine Ndb GQL 查询最大限制是多少?

google-app-engine - GAE 存储 key 与 StringID

python - 我可以完全用 Python 签署 X509 证书吗?