Я должен объединить 3 потока Observable в один. Я использую Angular и Firebase, вот как это должно работать ...
Шаг 1: Я отправляю запрос в Firebase и получаю array
. Я буду использовать id из свойства Speci c, чтобы запросить что-то еще для Шаг 2 .
Шаг 2: Я использую ID из Шаг 1 , чтобы получить данные из другой коллекции, для этого я получу еще один array
. В этом массиве у меня есть еще один ID , который мне нужен для Шаг 3 .
Шаг 3: Мне нужно получить объект из базы данных, используя Идентификатор , предоставленный на шаге 2.
Для того, чтобы это работало, я использую switchMap()
, но проблема в том, что я получаю VOID
как результат метода.
Помогите пожалуйста!
ОБНОВЛЕНИЕ: Я изменил оригинальный код. С этим я могу видеть console.log
, но когда я подписываюсь, я ничего не получаю.
getPanic() {
this.panicInfo = this.panicService.getPanic(this.checkID)
.pipe(
switchMap(panicSnaps => {
const requests = panicSnaps.map(panicSnap => {
const panicObj = {id: panicSnap.payload.doc.id, ...panicSnap.payload.doc.data() as any};
return this.panicService.getActions(panicObj.id)
.pipe(
tap({ complete: () => console.log('completed')}),
map(data => {
panicObj.actions = data;
console.log(panicObj);
return panicObj;
})
);
});
return forkJoin(requests);
}),
)
.subscribe();
}