具有限制/偏移的 Firebase 查询可能的解决方案
Posted
技术标签:
【中文标题】具有限制/偏移的 Firebase 查询可能的解决方案【英文标题】:Firebase query with limit / offset possible solutions 【发布时间】:2014-12-29 15:06:06 【问题描述】:有没有办法通过限制和偏移量从 firebase 检索数据?例如,我的 firebaseRef 中有大约 1000 个元素,并且想要开发某种分页。有没有办法在不加载完整对象列表的情况下做到这一点。
现在我正在使用queryLimitedToLast(limit)
来执行此操作,并为每个下一页增加limit
。但是这种方法不允许我获取页数。
更新:
有一件事我没有提到,但它非常重要。我的数据从后到前显示。想象一下,它是一个简单的信使,但带有分页。所以我想显示最后 20 个项目,然后在这 20 个之前显示 20 个,等等。
谢谢。
【问题讨论】:
我回答了您关于逐步浏览以下页面的问题。 Firebase 没有内置的儿童数量计数器。如果你需要,你可以自己实现它。看到这个问题:***.com/questions/15148803/… 【参考方案1】:是的,通过一长串子节点进行分页绝对是可能的。诀窍是记住当前页面上最后一项的键(或优先级或您排序的任何值),然后将其传递给queryStartingAt...
以用于下一页。
加藤在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 中也有。
请注意,此 sn-p 检索一个额外的项目 (LIMIT+1
),因为我们从上一页的最后一项开始。
【讨论】:
感谢您的解决方案。我已经更新了我的问题。忘了提到一件非常重要的事情:) 有什么想法可以实现吗? 从后面开始,可以使用queryLimitedToLast and
queryEndingAt`。如果您正在使用这些,但它并没有达到您期望的效果,那么您必须在您的问题中添加问题的最小再现。不要描述你的代码,展示它。以上是关于具有限制/偏移的 Firebase 查询可能的解决方案的主要内容,如果未能解决你的问题,请参考以下文章