Firebase Firestore-查看实时侦听器&;取消订阅JavaScript客户端SDK上的侦听器
如何在浏览器/客户端上查看活动的实时侦听器?文件表明 错误发生后,侦听器将不再接收任何事件 但我只是想确认/验证我的侦听器在某些事件后是否被取消订阅 这是我的代码片段。我的用户文档中有一个Firebase Firestore-查看实时侦听器&;取消订阅JavaScript客户端SDK上的侦听器,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,如何在浏览器/客户端上查看活动的实时侦听器?文件表明 错误发生后,侦听器将不再接收任何事件 但我只是想确认/验证我的侦听器在某些事件后是否被取消订阅 这是我的代码片段。我的用户文档中有一个cart字段,该字段存储一个指向单独orders集合中文档的orderId。在登录时,我想收听我的users集合中返回的user.uid文档。如果他们的购物车中有订单(例如,cart:h4the-cart-uid-7rhksjn),我想监听特定的订单-如果没有(例如,null或”,分离该订单上的所有侦听器(我的
cart
字段,该字段存储一个指向单独orders
集合中文档的orderId
。在登录时,我想收听我的users
集合中返回的user.uid
文档。如果他们的购物车中有订单(例如,cart:h4the-cart-uid-7rhksjn
),我想监听特定的订单-如果没有(例如,null
或”
,分离该订单上的所有侦听器(我的问题的症结在于,旧的orderId消失了)。我的问题是取消订阅侦听器,以便我不会抛出权限不足
/未授权
错误,因为在用户清空其购物车或用户注销后,侦听器仍处于活动状态
如果我能对父收藏说“取消订阅”,那就太好了
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();
}
});
没有列出活动侦听器的API。如果您需要这样一个列表,您需要自己跟踪它。回答下面的问题,但这听起来像是一个问题。如果您能更准确地解释您试图完成/解决的问题,我们可能能提供更好的帮助。我的问题归结为将一个变量传递给
.onSnapshot
侦听器cate您基本上使用函数表达式,例如var myDocListener=fireb..doc(myVar).onSnapshot
。您只需调用该函数一次即可启用该函数,再调用一次即可禁用该函数。因此,我正在解决如何执行此操作的问题…如果您在特定代码方面遇到问题,请编辑您的问题,将特定代码包含在您的问题中。这将使任何人都更容易看到您在做什么,以及您可能在哪里不要出错(或者可能需要下一步)。