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
。您只需调用该函数一次即可启用该函数,再调用一次即可禁用该函数。因此,我正在解决如何执行此操作的问题…如果您在特定代码方面遇到问题,请编辑您的问题,将特定代码包含在您的问题中。这将使任何人都更容易看到您在做什么,以及您可能在哪里不要出错(或者可能需要下一步)。