有没有办法从限制和偏移量的firebase检索数据?例如,我的firebaseRef中有大约1000个元素,并希望开发某种分页。有没有办法可以在不加载完整的对象列表的情况下完成它。
现在我使用queryLimitedToLast(limit)
执行此操作,并为每个下一页增加limit
。但是这种方法不允许我计算页数。
更新
有一件事我没有提及,但它非常重要。我的数据从最后到第一个显示。想象一下,它是一个简单的信使但是有了分页。所以我想显示最后20个项目,然后在这20个之前显示20个等等。
感谢。
答案 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
),因为我们从上一页的最后一项开始。