Как проверить, существуют ли данные в Firebase с помощью Angularfire2, а затем извлечь их с помощью оператора if / else

#angular #firebase #firebase-realtime-database #angularfire2

#angular #firebase #firebase-realtime-database #angularfire2

Вопрос:

Я работаю над проектом, использующим Angular2 с Angulafire2 / Firebase. Я могу без проблем извлекать списки и объекты, но когда я хочу отобразить страницу отдельного элемента с подробной информацией, я не могу «переключиться» на второй узел (для получения сведений об элементе), если запрошенный идентификатор отсутствует в первом. Я попробовал несколько подходов ‘if / else’ (вот один, в котором я пытаюсь подтвердить, что идентификатор имеет некоторое значение в ключе ‘title’), но все безрезультатно — приложение всегда распознает только один узел. Пожалуйста, кто-нибудь может посоветовать мне, как это исправить?

 import { Component, OnInit } from '@angular/core';
import { AngularFire, FirebaseListObservable, FirebaseObjectObservable } from 'angularfire2';
import { ActivatedRoute } from '@angular/router';
import 'rxjs/add/operator/map';

@Component({
  selector: 'app-item',
  templateUrl: './item.component.html',
  styleUrls: ['./item.component.less']
})

export class itemComponent implements OnInit {
item: FirebaseObjectObservable<any>;
constructor( private af:AngularFire, private route: ActivatedRoute) {

ngOnInit() {
this.route.params
  .map( params => {
    return params["id"]
  })
  .subscribe(id => {
    const itemID = this.af.database.object(`items/${id}`, { preserveSnapshot: true })
    itemID.subscribe(snapshot => {
        if( snapshot.val().key !== null ) {
        this.item = this.af.database.object(`items/${id}`);
        } else {
        this.item = this.af.database.object(`items01/${id}`);
        }
      });
    })
  }
}
  

Комментарии:

1. та же проблема, было ли у вас какое-либо решение для нее?