如何在浏览器/客户端上查看活动的实时侦听器? Handle listen errors文档指示
发生错误后,侦听器将不再接收任何事件
但是我只是想验证/验证某些事件后我的监听器是否已取消订阅。
这是我的代码段。我的用户文档中有一个cart
字段,它在单独的orderId
集合中存储着指向文档的orders
。登录时,我想收听我的user.uid
集合中返回的users
文档。如果他们的购物车中有订单(例如cart: h4the-cart-uid-7rhksjn
),我想收听该特定订单-如果没有(例如null
或""
,请分离该订单上的所有监听器(问题的症结,旧的orderId消失了。我的问题是取消订阅侦听器,这样我就不会抛出insufficient privilege
/ not authorized
错误,因为在用户清空购物车或用户后,侦听器仍然处于活动状态退出。
如果我可以对父集合说unsubscribe
,那将是很好的事情。
var userDocListener;
var orderDocListener;
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
userDocListener = function(){
return firebase.firestore().collection("users").doc(user.uid).onSnapshot(function (userDoc) {
if(userDoc.exists){
if(userDoc.data().cart == null || !userDoc.data().cart){
//user cart empty HOW TO UNSUBSCRIBE W/O THE ORDER ID?
cartBadgeDisplayHandler();
if(window.location.pathname === "/account" || window.location.pathname === "account"){
accountPageCartTabOrderNoOrderView();
}
orderDocListener();
} else {
orderDocListener = function () {
return firebase.firestore().collection("orders").doc(userDoc.data().cart).onSnapshot(function (orderDoc) {
cartBadgeDisplayHandler(orderDoc);
});
}
orderDocListener();
}
}
});
}
userDocListener();
} else {
// no user HOW TO UNSUBSCRIBE W/O THE USER UID?
userDocListener();
}
});
答案 0 :(得分:0)
没有列出活动侦听器的API。如果您需要这样的列表,则需要自己进行跟踪。