首页 > 解决方案 > Firebase 过滤结果

问题描述

我有一个问题,我从实时数据库中读取了 1000 条最后记录,但我需要例如记录号 100,200,300... 我可以这样做吗?我要制作图表,例如,我希望每 10 次测量时才显示一次。我的数据库看起来像这样: 在此处输入图像描述

 firebase.database().ref("Humidity").ref.orderByChild("time").limitToLast(1000).on("child_added",snapshot => {

标签: javascriptfirebasefirebase-realtime-database

解决方案


听起来您正在尝试构建基于偏移量的分页,首先显示最近的 100 条消息,然后显示接下来的 100 条,等等。这不是 Firebase 中分页的工作方式。

Firebase 上的分页遵循游标模型,并且基于知道锚节点。例如,如果您首先显示了 100 条最近的消息,那么您就知道所显示的最旧消息的时间戳和密钥。然后,您可以通过以下方式获取 100 条消息:

firebase.database().ref("Humidity")
  .orderByChild("time")
  .endAt(oldestTimeValue, oldestKey) //  new
  .limitToLast(100)
  .on("child_added",snapshot => {

这个:

  • 按节点的time值对节点进行排序。
  • 查找其timeisoldestTimeValue和其键(通常是类似 的推送键-M...)的oldestKey节点(以防多个节点具有相同的time值)。
  • 然后取之前的 100 个节点。

推荐阅读