我有一个使用angularfire2和firebase的ionic3应用程序。我使用firbase auth登录我的应用程序,并从firebase中检索关于" currentChallenges"的对象。当我使用注销功能时,Firebase会抛出错误。
错误讯息:
permission_denied at / currentChallenge:客户没有权限 访问所需的数据。
我在auth.service.ts中使用以下函数进行注销:
logout() {
this.isLoggedIn = false;
this.firebaseAuth
.auth
.signOut().then(() => {
this.appCtrl.getRootNav().popToRoot(); //root is login page
});
}

我不确定导致错误的确切位置/原因。在我的challenge.service.ts中,我创建了初始的可观察对象:
private dbCurrentChallengesObservable: FirebaseObjectObservable <any>;
constructor(db: AngularFireDatabase) {
this.dbCurrentChallengesObservable = db.object('/currentChallenge');
}
public getCurrentChallenges(){
return this.dbCurrentChallengesObservable;
}
&#13;
然后,我在我的模型(challenge.ts)中使用这个对象:
ionViewCanEnter(): boolean{
return this.authService.isAuthenticated();
}
ionViewDidLoad() {
this.currentChallenge = this.challengesService.getCurrentChallenges();
this.currentChallenge.subscribe(data => {
if(data.challenge1completed > 0) this.challenge1Completed = true;
if(data.challenge2completed > 0) this.challenge2Completed = true;
});
}
&#13;
起初我认为它与subscribe有关,我在challenge.ts中的on-ion-leave函数中添加了subscribe()。unsubscribe(),但这并没有阻止错误。但是一些东西仍然必须要听firebase,这必须在注销之前或甚至在注销之前停止。我只是不知道在哪里/在哪里/如何。
任何帮助都将不胜感激。
答案 0 :(得分:0)
private afDatabase: AngularFireDatabase,//blabla
this.afDatabase.database.goOffline();//To solve the permission denied 문제.
在signout();
之前添加上述语句我也花了很多时间来解决这个问题而没有发现任何一条线索。 希望这有帮助