具有限制/偏移可能解决方案的Firebase查询

时间:2014-12-29 15:06:06

标签: ios firebase

有没有办法从限制和偏移量的firebase检索数据?例如,我的firebaseRef中有大约1000个元素,并希望开发某种分页。有没有办法可以在不加载完整的对象列表的情况下完成它。

现在我使用queryLimitedToLast(limit)执行此操作,并为每个下一页增加limit。但是这种方法不允许我计算页数。

更新

有一件事我没有提及,但它非常重要。我的数据从最后到第一个显示。想象一下,它是一个简单的信使但是有了分页。所以我想显示最后20个项目,然后在这20个之前显示20个等等。

感谢。

1 个答案:

答案 0 :(得分:9)

是的,通过一长串子节点进行分页肯定是可能的。诀窍是记住当前页面上最后一项的关键(或优先级或你排序的任何值),然后将其传递到queryStartingAt...以获取下一页。

Kato在他的how to implement common SQL queries in Firebase博客文章中写了一个很好的例子:

// fetch page 2 of widgets
new Firebase("https://examples-sql-queries.firebaseio.com/widget")
   .startAt(null, lastWidgetOnPrevPage)
   .limitToFirst(LIMIT+1) // add one to limit to account for lastWidgetOnPrevPage
   .once('value', function(snap) {
      var vals = snap.val()||{};
      delete vals[lastWidgetOnPrevPage]; // delete the extraneous record
      console.log('widgets on this page', vals);
   });

此示例使用JavaScript SDK,但相关方法也可在iOS SDK中使用。

请注意,此代码段会检索一个额外的项目(LIMIT+1),因为我们从上一页的最后一项开始。