光标向后分页正在工作但缺少一个项目

Ray*_*Yun 8 google-app-engine app-engine-ndb

寻找想法/替代方案到提供与GAE数据存储区查询匹配的项目的页面/项目计数/导航,我可以通过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))
Run Code Online (Sandbox Code Playgroud)

不幸的是,它失败了这个错误.

回溯(最近一次调用最后一次):文件"/Users/reiot/Documents/Works/appengine-ndb-experiment/ndb/query_test.py",第32行,在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)]
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Gui*_*sum 14

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

rev_cursor = cursor.reversed()
Run Code Online (Sandbox Code Playgroud)

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