我订阅了 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)
)
};
最佳答案
据我所知,取消订阅是同步的。因此,当 unsubscribe()
完成后,您可以注销:
unsubscribe();
firebase.auth().signOut().then(() => {
// Redirect to home page
});
如果此后您仍然收到安全错误,则您可能仍然为该用户附加了另一个监听器。如果情况并非如此,请编辑您的问题以包含 minimal, complete/standalone code that we can run to reproduce the problem 。或者,您(也)可以在 jsbin 等网站上设置问题的最小重现。
关于javascript - firestore取消订阅完成事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58305550/