2016-09-28 4 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) всегда будет правдой. Как я могу посмотреть на наблюдаемые и убедиться, что он пуст?

ответ

3

Вы можете найти в пределах наблюдаемого трубопровода. Вы можете .map его, если хотите вернуть только Observable<boolean>. Или вы можете что-то сделать с ним в конвейере.

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

Я добавил код для наблюдаемого