Firestore取消订阅完成事件

时间:2019-10-09 13:41:09

标签: javascript google-cloud-platform google-cloud-firestore

我在firestore中订阅了文档,在注销之前我想取消订阅,否则它将抛出错误,因为我使用的是firestore安全规则,并且当用户注销并且我没有取消订阅时,访问将被拒绝它将引发错误。

我尝试了下面的代码,但仍然无法正常工作,我仍然从firestore安全规则中收到错误消息,因此我引入了setInterval,但是这花费了太多时间(在我的测试中,我花了5秒钟才能够避免该错误)< / p>

您是否有更好的方法来避免此问题,我的意思是取消订阅完成后会触发一个事件(我想长时间避免setInterval)?

var unsubscribe = db.collection('notifications').doc('docID').onSnapshot(
          function(doc) {
            // Do things
          })

function logout () {
  unsubscribe(
    setTimeout(function() {
      firebase.auth().signOut().then(() => {
        // Redirect to home page
      });
    }, 600)
  )
};

1 个答案:

答案 0 :(得分:3)

据我所知,退订是同步的。因此,unsubscribe()完成后,您可以注销:

unsubscribe();
firebase.auth().signOut().then(() => {
    // Redirect to home page
});

如果在此之后仍然出现安全错误,则可能仍为该用户附加了另一个侦听器。如果情况并非如此,请编辑您的问题以包含minimal, complete/standalone code that we can run to reproduce the problem。另外,您也可以在jsbin这样的网站上对问题进行最小化设置。