为什么Firebase加载时会调用child_added事件?

时间:2018-07-18 12:31:14

标签: firebase firebase-realtime-database

每次加载项目列表时,我都意识到调用了child_added事件,但是为什么呢?不应该仅在将新的孩子添加到数据库时才调用此事件吗?

3 个答案:

答案 0 :(得分:2)

首次添加侦听器时,将始终为节点下的 all 个现有子对象调用添加了子对象的侦听器。然后,当添加新的子代时,侦听器将继续被调用。这是预期的行为。它使您的代码可以始终与该节点的全部内容保持同步。

如果您只想听最近添加的子代,则必须提出一个查询,该查询涉及查看每个子代中的时间戳字段,以找出您的代码是否感兴趣。

答案 1 :(得分:2)

来自https://firebase.google.com/docs/database/admin/retrieve-data#child-added

  

child_added为每个现有子级触发一次,然后每次将新子级添加到指定路径时再次触发。

要解决这个问题,已经有几篇文章回答了这个问题:

答案 2 :(得分:1)

因为(在我看来)这是填充列表的便捷方法,所以您只能使用添加或删除事件,而不能像这样直接使用加载。

假设您在ios或android中有列表。您需要的是:

  • 在开始时加载它-您可以使用add事件,firebase会调用它多次,这取决于节点(列表)中的项目数;
  • 对从另一台设备添加新项目作出反应-再次,将调用添加事件,并将新项目填充到列表中;
  • 删除(与添加相同)。