Возврат наблюдаемого из функции .subscribe другого наблюдаемого объекта - PullRequest
1 голос
/ 20 июня 2020

У меня крошечная наблюдаемая проблема в Angular с Typescript. Код ниже не работает , это больше для понимания того, что я хочу делать.

getRefuels(): Observable<Refuel[]> {
    return new Observable<Refuel[]>((obs) => {
        this.hashService.getHashedUserEmail().subscribe((hashValue) => {

            //This is the observable I want to return
            return this.firestore
                .collection<Refuel>(`users/${hashValue}/refuels`, ref => ref.orderBy('date', 'desc'))
                .valueChanges({idField: 'id'});

        });
    });
}

Я пытался добавить .pipe(map(res => { return res; })), но это не совсем сработало что я хотел. Также я пробовал следующий код, но типы данных не подходили:

obs.next(this.firestore
  .collection<Refuel>(`users/${hashValue}/refuels`, ref => ref.orderBy('date', 'desc'))
  .valueChanges({idField: 'id'}));

obs.complete();

Это сработало, когда я подписался на свой наблюдаемый Firestore, а затем поместил полученный список в obs.next(), но это Таким образом, я больше не получаю обновления списка.

У вас есть идея, как я могу решить эту проблему?

1 Ответ

1 голос
/ 20 июня 2020

когда у вас есть 2 наблюдаемых, вы можете использовать оператор switchMap

first_observable.pipe(
  switchMap(result => {
   // do something with the result
   return second_observable;
   })
).subscribe(second_result => {
   // do something with result of second observable
});
...