2017-10-23 11 views
0

私はfirebaseから一度だけデータを取得しようとしています。 このコードでは、購読してリアルタイムで変更と更新の値を監視します。AngularFire 2 v5一度データを取得する方法は?

this.profileData = this.fire.authState.switchMap(auth => this.db.object(`profile/${auth.uid}`).snapshotChanges().map(action => { 
     const $key = action.payload.key; 
     const data = { $key, ...action.payload.val() }; 
     return data; 

    })).subscribe(profile => { 

     this.profileData = profile; 


     console.log(this.profileData.username); // this is working. 

    }); 

私はこのような何かをしようとしていたが、あなたは、あなたが退会を気にする必要があり、独自の観測を使用している場合は、そのは

this.profileData = this.fire.authState.switchMap(auth => this.db.object(`profile/${auth.uid}`)).take(1).subscribe(profile =>{ 

console.log(profile.username); 

})); 
+0

'take(1)'は動作するはずです:[購読なしで値を1回だけ取得する](https://github.com/angular/angularfire2/issues)/456#issuecomment-241509299)。 – Grimthorr

+0

this.profileData = this.fire.authState.switchMap(auth => this.db.object( 'profile/$ {auth.uid}'))。 console.log(this.profileData.username);これは未定義を返しますか? –

+0

with console.log(this.profileData)私はこれを持っています:http://prntscr.com/h0waiy –

答えて

0

を働いていません。

角型コンポーネントには、ngOnInit、ngOnChangeなどのライフサイクルフックが多数あります。関数ngOnDestroyもあり、そのフックであなたの観測値を登録解除することをお勧めします。

一度だけデータを取得する場合は、退会した場所で関数を呼び出すことをお勧めします。 Angular/RxJs When should I unsubscribe from `Subscription`

+0

私が投稿した2番目のコードについてありがとうございましたか?なぜデータを一度取得できないのですか? (btw最初のコードは完璧に動作していますが、一度ではありません) –

関連する問題