【发布时间】:2020-10-02 18:30:02
【问题描述】:
这个标题可能需要更多解释。
基本上我从后端得到的是一个带有一组赛车手的 Observable,我想映射另一个属性 isOnTrack,它由我从后端检索到的另一个 Observable(简单布尔值)组成。我想展平最终结果,所以我在 Observable 中没有 Observable。我已经尝试了许多 rxjs 运算符,但我无法让它工作。
无效的代码:
this.drivers$ = this.db.list('users').valueChanges().pipe(
map(arr => arr.map( (driver:any) => {
driver.isOnTrack = this.db.object(`telemetry/${driver.uid}/values/IsOnTrack`).valueChanges();
return driver
})),
mergeAll()
);
这成功地将 isOnTrack 可观察对象映射到数组项,但我无法将其展平。
项目在 RxJS 6 上
更新 1
在乔纳森的回答之后,我相信我应该使用 unpacked 这个词而不是 flattening
我要寻找的转换后的 Observable 应该提供类似于
of([
{id: 1, name: 'foo', isOnTrack: true},
{id: 2, name: 'bar', isOnTrack: true},
{id: 3, name: 'baz', isOnTrack: false},
])
在后端更改一个 IsOnTrack 后,它应该再次发出完整的数组。
of([
{id: 1, name: 'foo', isOnTrack: false},
{id: 2, name: 'bar', isOnTrack: true},
{id: 3, name: 'baz', isOnTrack: false},
])
【问题讨论】:
标签: typescript rxjs angularfire rxjs-observables