2016-09-28 8 views
3

私は以下のコードでFirebaseObjectObservableを取得しました。しかし、その道はまだそこにいなくてもダイナミックです。したがって、パスがない場合は、そのパスを作成します。しかし、それがあれば、私はデータを更新/パッチしたい。FirebaseObjectObservableが空であることをどのように知ることができますか?

this.userLocationDetail = this.af.database.object('/userProfile/' + uid + '/bbwList/' + afLocationId); 
    if (this.userLocationDetail) { 

    console.log('Data is found'); 

    } else { 
    console.log('Data not found'); 
    } 

問題は、(this.userLocationDetail)が常にtrueになる場合です。どのように観測可能なものを調べ、それが空であることを確認することができますか?

答えて

3

観測可能なパイプライン内で見つけることができます。 Observable<boolean>だけを返す場合は、.mapできます。または、パイプライン内でそれを使って何かをすることができます。

this.af.database.object('/userProfile/' + uid + '/bbwList/' + afLocationId) 
    .subscribe(x => {  
     if (x.hasOwnProperty('$value') && !x['$value']) { 
      console.log('data is not found'); 
     } else { 
      console.log('data is found'); 
     } 
    }); 

あなただけのObservable<boolean>をしたい場合:

this.af.database.object('/userProfile/' + uid + '/bbwList/' + afLocationId) 
    .map(x => {  
     if (x.hasOwnProperty('$value') && !x['$value']) { 
      return false; 
     } else { 
      return true; 
     } 
    }); 

以上の要約版:

this.af.database.object('/userProfile/' + uid + '/bbwList/' + afLocationId) 
    .map(x => !x.hasOwnProperty('$value') || x['$value']); 
+0

ありがとうございます!観察可能なメソッドの例も同様ですか? –

+0

私は観察可能なコードを追加しました

関連する問題