如何像在SQL中一样在firebase实时数据库中实现分页?

如何像在SQL中一样在firebase实时数据库中实现分页?,firebase,firebase-realtime-database,pagination,Firebase,Firebase Realtime Database,Pagination,我正在创建一个管理应用程序,它需要列出保存在firebase实时数据库中的产品。因为可能有数百种产品,而且它们不能在单个页面上列出,所以我必须实现分页。我找到了一种实现官方文档中描述的分页的方法 通过使用startAt()和limitToFirst()我可以在页面中向前跳转,通过使用endAt()和limitToLast()我可以在页面中向后跳转。这样我可以在连续的页面之间跳转。e、 g 第1页第2页第3页第4页 用于在页面中向前跳跃 firebase.db.ref("products")

我正在创建一个管理应用程序,它需要列出保存在firebase实时数据库中的产品。因为可能有数百种产品,而且它们不能在单个页面上列出,所以我必须实现分页。我找到了一种实现官方文档中描述的分页的方法

通过使用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)
用于在页面中向后跳转

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库(早已弃用)
firebase utils
首先通过REST API加载所有键(允许加载键而不加载其值),然后使用REST API查找每个页面的开始和结束,从而实现分页。但这意味着你会错过实时更新,这在使用Firebase时感觉有点像浪费。

我明白了。非常感谢:)