【问题标题】:How to implement pagination in firebase realtime database like we can implement in SQL?如何在 Firebase 实时数据库中实现分页,就像我们可以在 SQL 中实现的那样?
【发布时间】:2019-12-03 16:09:20
【问题描述】:

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

通过使用 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)

上面的代码sn-ps pageSize是一个页面要显示的产品个数,lastKey是上一页结果中最后一个产品的key查询(如果是第一页则为空),firstKey是上一页查询结果中第一个产品的键。

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

第 1 页 第 3 页 第 6 页

谁能指导我在firebase实时数据库中可以做到这一点,如果可以,那么如何?

提前致谢。

【问题讨论】:

    标签: firebase firebase-realtime-database pagination


    【解决方案1】:

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

    要加载页面,您需要知道该页面上的第一项或最后一项的键。无法通过偏移量跳转到页面,您必须知道其中一个键。

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

    【讨论】:

    • 我明白了。非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 2019-02-08
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多