首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何像SQL那样在实时数据库中实现分页?

问如何像SQL那样在实时数据库中实现分页?
EN

Stack Overflow用户
提问于 2019-07-25 11:31:46
回答 1查看 460关注 0票数 1

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

通过使用startAt()和limitToFirst(),我可以在页面中向前跳转,通过使用endAt()和limitToLast(),我可以在页面中向后跳。这样我就可以在连续的页面之间跳转。e.g

第1页<->第2页<->第3页<->第4页

在页面中进行前跳

代码语言:javascript
复制
firebase.db.ref("products")
  .orderByKey()
  .limitToFirst(pageSize + 1)
  .startAt(lastKey)

用于页面中的反向跳转

代码语言:javascript
复制
firebase.db.ref("products")
  .orderByKey()
  .limitToLast(pageSize + 1)
  .endAt(firstKey)

在上面的代码片段中,pageSize是要在页面中显示的产品数量,lastKey是上一页查询结果中的最后一个产品的关键(在第一页查询时为空),firstKey是上一页查询结果中的第一个产品的关键。

但问题是,如果我必须直接从第1页跳到第3页,那么我就无法找到实现这一目标的方法。这是我想要的;

第1页<->第3页<->第6页

有人能指导我在火柴实时数据库中做这件事吗?如果是的话怎么做?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-25 12:47:07

Firebase的查询模型是基于锚的,而不是基于偏移的.这使得它不太适合随机访问分页,而更适合无限滚动类型的延迟加载。

要加载页面,您需要知道该页上的第一项或最后一项的键。没有办法跳转到一个页面的偏移量,你将不得不知道其中一个键。

firebase-utils库(由来已久)实现了分页,首先通过REST加载所有键(这允许加载键而不加载它们的值),然后使用它查找每个页面的开始和结束。但是这意味着你错过了实时更新,这在使用Firebase时感觉有点浪费。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57200971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档