【问题标题】:firestore unsubscribe finished eventfirestore 取消订阅完成事件
【发布时间】:2020-02-06 20:58:33
【问题描述】:

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

我尝试了下面的代码,但仍然无法正常工作我仍然从 firestore 安全规则中得到错误,所以我引入了 setInterval 但它花费了太多时间(在我的测试中,我一直到 5 秒才能避免错误)

你有没有更好的方法来避免这个问题,我的意思是一旦取消订阅就会触发一个事件(我想长时间避免 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)
  )
};

【问题讨论】:

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


    【解决方案1】:

    据我所知,退订是同步的。所以当unsubscribe()完成后,你就可以退出了:

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

    如果在此之后您仍然遇到安全错误,您可能仍然为用户附加了另一个侦听器。如果情况并非如此,请编辑您的问题以包含minimal, complete/standalone code that we can run to reproduce the problem。或者,您可以(也)在 jsbin 之类的网站上设置问题的最小再现。

    【讨论】:

    • 我花时间在jsbin上重现它:jsbin.com/peruna/edit?js,console,output它工作正常然后我检查了firebase的版本,我发现我有5.8.4,最新版本是7.1.0,所以我将firebase更新到最新版本,现在它可以正常工作了,我的错,很抱歉浪费您的时间,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2020-04-07
    • 2019-04-09
    • 2017-04-25
    • 1970-01-01
    相关资源
    最近更新 更多