2016-09-28 2 views
3

Also habe ich Code unten erhalten Sie die FirebaseObjectObservable. Aber der Weg ist dynamisch, da er vielleicht noch nicht da ist. Wenn der Pfad nicht vorhanden ist, möchte ich diesen Pfad erstellen. Aber wenn es da ist, möchte ich die Daten aktualisieren/patchen.Woher weiß ich, dass FirebaseObjectObservable leer ist?

Das Problem ist, wenn (this.userLocationDetail) immer wahr ist. Wie kann ich in das Observable schauen und sicherstellen, dass es leer ist?

Antwort

3

Sie können innerhalb der beobachtbaren Pipeline herausfinden. Sie können .map, wenn Sie nur eine Observable<boolean> zurückgeben möchten. Oder Sie können etwas damit in der Pipeline tun.

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'); 
     } 
    }); 

Wenn Sie nur ein Observable<boolean>:

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

oder eine verkürzte Version:

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

Thank you! Ein beliebiges Beispiel für die beobachtbare Methode ? –

+0

Ich habe den Code für eine beobachtbare hinzugefügt –

Verwandte Themen