Запросить конкретный список данных из Firebase RTDB? - PullRequest
0 голосов
/ 24 апреля 2018

Есть ли лучший способ запросить определенный набор данных в Firebase RTDB, чем этот? Все, что я могу придумать, - это использовать forEach () и толкать объект BehaviorSubject внутри подписки на каждое наблюдаемое излучение. Дай мне знать! Я застрял на этом некоторое время.

hits = new BehaviorSubject([]);

territories = ['16830', '16832', '16838'] // Zip Codes

getTerritories(territories) {
    territories.forEach(key => {
      this.db.object(`locations/${key}`).snapshotChanges()
      .map(zip => zip.payload.val())
      .subscribe(zip => {
        let currentHits = this.hits.getValue();
        currentHits.push(zip);
        this.hits.next(currentHits);
      });
    });
   }

this.hits.subscribe(res => console.log(res));

1 Ответ

0 голосов
/ 24 апреля 2018

Вы можете использовать Observable.forkJoin():

Observable.forkJoin(
    //this returns an array of observables.
    territories.map(key => this.db.object(`locations/${key}`)
        .map(zip => zip.payload.val()))
)
    .subscribe(res => console.log(res));

Обратите внимание, что Observable.forkJoin принимает массив наблюдаемых и запускает их параллельно, дождитесь завершения всех из них, прежде чем выдавать значение.

...