【发布时间】:2020-07-21 09:48:23
【问题描述】:
我必须将 3 个 Observable 流合并为一个。 我正在使用 Angular 和 Firebase,这就是它的工作原理......
第 1 步:我向 Firebase 发送查询并收到 array。我将使用特定属性中的 id 来查询其他内容以获取 Step 2。
第 2 步:我使用 第 1 步中的 ID 从另一个集合中获取数据,为此我将收到另一个 array。在这个数组中,我有另一个 ID,我需要 第 3 步。
第 3 步:我需要使用第 2 步中提供的 ID 从数据库中获取一个对象。
为了让它工作,我使用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();
}
【问题讨论】:
-
firebase 提供数据流,而不是单次发射 observable,您是在寻找流还是一次性 observable?
-
一次性 Observable 也可以。
标签: javascript angular typescript firebase rxjs