在节点上停止一个'类型'的监听器 - firebase / javascript

时间:2017-10-13 17:08:07

标签: javascript firebase firebase-realtime-database

在将监听器分离到firebase中的节点时出现问题。我目前正在构建应用程序的聊天界面,所以你可以想象我在这里谈论的内容。

  1. 所以要听聊天并实际显示我使用的所有消息: firebase.database().ref('/path/to/relevant/chatNode').on('value')
  2. 我还在应用程序中有另一个视图,其中列出了所有当前活动的聊天记录,它显示了您正在聊天的人的姓名,并且您可以在其下方看到聊天中可用的最后一条消息。

    1. 为了让最后一部分与我使用的DB保持同步: firebase.database().ref('/path/to/relevant/chatNode').limitToLast(1).on('child_added')
    2. 现在的问题是,一旦用户退出显示所有消息的视图,我想停止收听更改。基本上我想在听众 1号上拨打.off(),但不要在 2号上拨打电话。

      然而,我刚刚意识到.off()会阻止两个听众。有没有办法指定我想要停止同步的侦听器类型,或者在用户导航离开实际聊天时是否需要回忆听众数字2

      在firebase文档中,您可以找到以下行: You can remove a single listener by passing it as a parameter to off().

      如何将单个侦听器作为参数传递?

1 个答案:

答案 0 :(得分:2)

当您使用on()注册一个监听器时,它将返回该功能。您可以将其传递给off以仅停止该侦听器。

所以:

var listener = firebase.database().ref('/path/to/relevant/chatNode').on('value')

然后:

firebase.database().ref('/path/to/relevant/chatNode').off('value', listener)