Firebase查询与限制/偏移可能的解决scheme

有没有办法从限额和偏移量的Firebase检索数据? 例如,我在我的firebaseRef中有大约1000个元素,并且想要开发某种分页。 有没有一种方法,我可以做到这一点,而无需加载完整的对象列表。

现在我正在使用queryLimitedToLast(limit)来做到这一点,并增加每个下一页的limit 。 但是这种方法不允许我得到页数。

更新:

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

谢谢。

是的,通过一个长长的子节点列表是绝对有可能的。 诀窍是记住当前页面最后一个项目的关键字(或优先级或任何值),然后将其传递到queryStartingAt...下一页。

加藤在他的博客文章中写了一个很好的例子, 说明如何在Firebase中实现常见的SQL查询 :

 // 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 )。