如何知道 Firebase 查询何时结束

4

我想从我的数据存储中收集最近的10个项目。我相信我应该使用.child().limitToLast()来完成这个任务,这样可以在每次添加结果到子级时触发一个事件。

我不确定总共是否有10个项目,所以简单的计数器无法解决问题。

如何知道Firebase何时完成向我提供结果?

示例查找代码:

var plots = [];
firebaseDatastore.child("plots").orderByChild("unicode-timestamp").limitToLast(10).on("child_added", function(snapshot) {
    // Add the new item to the list
    plots.push(snapshot.val());
});

我需要知道最终图表何时被添加,无论是否达到限制。
1个回答

3

Firebase查询永远不会真正结束。它将继续监视(在您的情况下)按Unicode时间戳排序的图表,并保留最后10个图表的"窗口"。

因此:

  • child_added:timestamp1
  • child_added:timestamp2
  • ...
  • child_added:timestamp9
  • child_added:timestamp10

然后,当您添加另一个图表时:

  • child_removed:timestamp1
  • child_added:timestamp11

如果您不想使用此行为,则有两个选择:

  1. 使用value事件,然后对子节点进行snapshot.forEach循环。
  2. 保持计数器,并在达到预期的子节点数量时off侦听器。

非常有帮助,理解了Frank,谢谢!在我的情况下,“value”命令是我想要的。 计数器解决方案可行,但如果没有足够的节点达到限制,则会失败(因此我需要两个查询:一个用于获取“最后”节点,我将其视为备用终止情况,另一个用于获取列表)。 - slifty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接