Firebaseデータベース内のある場所への購読を解除したいと思います。私はIonic 3とAngularFire2を使用しています。AngularFire dbの観測/購読を解除するにはどうすればいいですか?
しかし、私はサブスクリプションを作成するためにどのような種類のデータ型を使用するのか分かりません。今のところ、私はサブスクライブできないものがFirebaseObjectObservable<any>
です。
私は(私はafAuth.auth.signOut()
を呼び出すときに)サインアウトしようとしたときに脱退しないと、私は次のエラーを打つ:
Runtime Error**
permission_denied at /parents/<auth.uid>: Client doesn't have permission to access the desired data.
Stack**
Error: permission_denied at /parents/<auth.uid>: Client doesn't have permission to access the desired data.
at G (http://localhost:8100/build/main.js:36366:36)
at Object.G (http://localhost:8100/build/main.js:36370:86)
at Lg (http://localhost:8100/build/main.js:36342:98)
at Ag.g.wd (http://localhost:8100/build/main.js:36335:310)
at og.wd (http://localhost:8100/build/main.js:36325:364)
at Yf.Xf (http://localhost:8100/build/main.js:36323:281)
at ag (http://localhost:8100/build/main.js:36307:464)
at WebSocket.Ia.onmessage (http://localhost:8100/build/main.js:36306:245)
at WebSocket.o [as __zone_symbol___onmessage] (http://localhost:8100/build/polyfills.js:2:24340)
at t.invokeTask (http://localhost:8100/build/polyfills.js:3:9967)
私は「ので、まだそれが今にアクセスできません何かを読んしようとしているのでmは認証されていません。
マイFirebaseルール:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
マイhome.tsファイル:
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { AngularFireDatabase, FirebaseObjectObservable, FirebaseListObservable } from 'angularfire2/database';
import { AngularFireAuthModule, AngularFireAuth } from 'angularfire2/auth';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
//What datatype should I make this?
profileResult: FirebaseObjectObservable<any>;
constructor(public navCtrl: NavController,
private db: AngularFireDatabase,
private afAuth: AngularFireAuth) {
}
ngOnInit() {
//Get authentication state
this.afAuth.authState.subscribe(
(auth) => {
//if authenticated, get profile information for db and display using profileResult
if (auth != null) {
this.db.object('/parents/' + auth.uid).subscribe(profileResult => {
this.profileResult = profileResult;
console.log(profileResult);
});
}
});
}
/* What I would like to do, but can't unsubscribe from FirebaseObjectObservable
ngOnDestroy() {
this.profileResult.unsubscribe();
}
*/
//calling this results in my error
signOut() {
this.afAuth.auth.signOut();
}
}
マイhome.htmlファイル:
<ion-header>
<ion-navbar>
<ion-title>
My Awesome App
</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
{{ profileResult?.firstName }}<br />
{{ profileResult?.lastName }}<br />
{{ profileResult?.youngestChildAge }}<br />
{{ profileResult?.interests }}<br />
{{ profileResult?.facebookUrl }}<br />
<button full ion-button (click)="signOut()">Sign Out</button>
</ion-content>
私は何を変更することができますprofileResult: FirebaseObjectObservable<any>;
と両方のデータをキャプチャするだけでなく、退会することもできますか?