3
我在這裏使用了AngularFire2版本的代碼,我用它從我的組件之一的數據庫中獲取一些成員。AngularFire2取消訂閱註銷,未註冊訂閱時出現數據庫權限錯誤
我在同一個組件中調用此註銷時遇到問題。我取消訂閱訂閱,但我仍然在控制檯中發現錯誤Exception was thrown by user callback. Error: permission_denied at /users/uid
。我知道這是因爲我不再登錄,我的數據庫規則不允許這個讀取操作。我不知道爲什麼如果我已經取消訂閱,它仍然試圖讀取數據。
constructor(private afAuth: AngularFireAuth, private db: AngularFireDatabase) {
this.user = afAuth.authState;
this.userSub = this.user.subscribe(auth => {
if (auth) {
this.member = db.object('/users/' + auth.uid);
this.dbSub = this.member.subscribe();
}
});
}
logout() {
this.dbSub.unsubscribe();
this.userSub.unsubscribe();
this.afAuth.auth.signOut()
.then(() => this.router.navigateByUrl('/login'));
}
也許你正在模板中的某處使用'async'管道的observable?如果你是,那將是另一個訂閱。 – cartant
不應該自動取消訂閱 – user1738539
是的,當組件被銷燬等,但不僅僅是因爲你調用你的註銷方法。您的問題中沒有足夠的信息可以回覆。 – cartant