我在同一路径上有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()以便选择该侦听器。但是,这种方法似乎可以解决问题,因此我想知道是否可以通过其他任何方式来实现。
答案 0 :(得分:1)
注册侦听器时,on()
返回对该精确侦听器的引用。如果您将该引用传递给off()
,则只会删除该监听器。
所以:
var query = postRef.orderByChild('timestamp').limitToLast(10);
var listener = query.on("value",
...
然后:
query.off(listener);