Firebase仅在同一路径上分离其中一个侦听器

时间:2018-07-24 02:43:28

标签: javascript firebase firebase-realtime-database

我在同一路径上有2个Firebase侦听器。其中一个获取最新的项目,另一个则类似于查询,提供特定的用户项目。两者都被炒作价。是否可以分离其中一个侦听器,同时保留另一个?

postRef = db.ref(`posts/${location}`)
postRef.orderByChild('timestamp').limitToLast(10).on("value", 
    function(snapshot) {
        dispatch({
        type: "POST_GET_POST",
        payload: snapshot.val()
    })
})

userRef = db.ref(`posts/`)
userRef.child(location).orderByChild("user").equalTo(user.uid).on("value", 
    function(snapshot) {
        dispatch({
          type: "POST_USER_POST",
          payload: snapshot.val()
    })
})

下面的代码将关闭上述两个侦听器。

ref = db.ref(`posts/${location}`)
ref.off

我已经考虑过将这些侦听器之一更改为child_added,因此我可以将事件类型传递给ref.off()以便选择该侦听器。但是,这种方法似乎可以解决问题,因此我想知道是否可以通过其他任何方式来实现。

1 个答案:

答案 0 :(得分:1)

注册侦听器时,on()返回对该精确侦听器的引用。如果您将该引用传递给off(),则只会删除该监听器。

所以:

var query = postRef.orderByChild('timestamp').limitToLast(10);
var listener = query.on("value", 
  ...

然后:

query.off(listener);