我正在创建一个管理应用程序,它需要列出保存在我的 firebase 实时数据库中的产品。由于可能有数百种产品并且它们无法在单个页面上列出,因此我必须实现分页。我已经找到一种方法作为官方文档中的描述来实现分页这里。
通过使用startAt()和limitToFirst()我可以在页面中向前跳转,通过使用endAt()和limitToLast()我可以在页面中向后跳转。这样我就可以在连续页面之间跳转。例如
第 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 页
任何人都可以指导我是否可以在 firebase 实时数据库中做到这一点,如果是,那么如何?
提前致谢。
Firebase 的查询模型是基于锚点的,而不是基于偏移量的。这使得它不太适合随机访问分页,而更适合无限滚动类型的延迟加载。
要加载页面,您需要知道该页面上的第一项还是最后一项的键。无法通过偏移量跳转到页面,您必须知道其中一个键。
(早已弃用)firebase-utils
库通过首先通过 REST API 加载所有键(允许加载键而不加载它们的值)来实现分页,然后使用它来查找每个页面的开始和结束。但这意味着您会错过实时更新,这在使用 Firebase 时感觉有点浪费。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句