Google App Engine:如何计算给定偏移量的查询结果?

时间:2011-08-19 14:47:24

标签: google-app-engine count pagination fetch

我正在对已排序的模型实施分页,而且就目前而言,我的查询正在获取太多数据。我显示指向页面的链接的方式与Google类似:当前页面突出显示,并且您可以导航到页面周围的“填充”。例如,如果有20个页面,填充是5,而您在第10页,页面链接将如下所示:

... 5 6 7 8 9 [10] 11 12 13 14 15 ...

问题是,我需要计算当前页面之后的页数,以便知道应该显示当前页面的页面链接数量。为此,我总结了填充页面所需的项目数,加上当前页面加上一个(知道是否显示“...”),然后获取这些结果。这导致对结果的大量查询,最终,我只需要一小部分。

Google App Engine api提供count() function,返回查询提取的结果数。但是,它不允许我指定偏移量。

如何解决此问题?

我正在考虑在当前页面之后的下一页上获取第一个项目,然后在另一个对该项目的值进行排序的查询上执行count(),如果这是有意义的话。我是在正确的轨道还是我完全错过了什么?我对app引擎比较陌生,所以就这么简单!谢谢:)

更新

谢谢你,彼得。

游标确实是合适的使用方法。这是一个希望实现同样目标的人的例子:

# For example, the following query has 27 results.
book_query = Book.all().filter("name_lowercase < ", "b" )
# Let's fetch 10 books starting at offset 0...
r = book_query.fetch(10, 0)
# This returns a cursor to the book after the last fetched result, index 10
c = book_query.cursor()

# Now let's count the number of results after our fetch, limit 100.
# To use cursors, the query must be exactly the same.
book_query2 = Book.all().filter("name_lowercase < ", "b" ).with_cursor(c) 
book_query2.count(100) # Returns 17

1 个答案:

答案 0 :(得分:1)

我还没有用过它们,但我相信Query Cursors正是你要找的。