我正在创建一个管理应用程序,它需要列出保存在我的防火墙实时数据库中的产品。由于可以有数百种产品,它们不能在单一的页面上列出,所以我必须实现分页。我找到了一种实现分页的方法,如官方文档这里中所描述的。
通过使用startAt()和limitToFirst(),我可以在页面中向前跳转,通过使用endAt()和limitToLast(),我可以在页面中向后跳。这样我就可以在连续的页面之间跳转。e.g
第1页<->第2页<->第3页<->第4页
在页面中进行前跳
firebase.db.ref("products")
.orderByKey()
.limitToFirst(pageSize + 1)
.startAt(lastKey)用于页面中的反向跳转
firebase.db.ref("products")
.orderByKey()
.limitToLast(pageSize + 1)
.endAt(firstKey)在上面的代码片段中,pageSize是要在页面中显示的产品数量,lastKey是上一页查询结果中的最后一个产品的关键(在第一页查询时为空),firstKey是上一页查询结果中的第一个产品的关键。
但问题是,如果我必须直接从第1页跳到第3页,那么我就无法找到实现这一目标的方法。这是我想要的;
第1页<->第3页<->第6页
有人能指导我在火柴实时数据库中做这件事吗?如果是的话怎么做?
提前谢谢。
发布于 2019-07-25 12:47:07
Firebase的查询模型是基于锚的,而不是基于偏移的.这使得它不太适合随机访问分页,而更适合无限滚动类型的延迟加载。
要加载页面,您需要知道该页上的第一项或最后一项的键。没有办法跳转到一个页面的偏移量,你将不得不知道其中一个键。
firebase-utils库(由来已久)实现了分页,首先通过REST加载所有键(这允许加载键而不加载它们的值),然后使用它查找每个页面的开始和结束。但是这意味着你错过了实时更新,这在使用Firebase时感觉有点浪费。
https://stackoverflow.com/questions/57200971
复制相似问题