【发布时间】:2019-04-08 22:13:46
【问题描述】:
我正在使用 observable 来查询我的数据库。 这个 observable 将返回一个包含所有找到的匹配对象的数组。 我的问题是我想用我将从另一个 API 检索到的更多细节来映射 observable。
我尝试了 concatMap 但它只让我在初始 observable 中嵌套 1 个 observable
const usersAPI$: Observable<Users[]> = // something
const assistsAPI$: Observable<Assists[]> = // something
const modifiedAssists$ = assistsAPI$.find().pipe(
concatMap(assists =>
assists.map(assist => usersAPI$.get(assist.userID)
.pipe(
map(user =>
assist = {...assist}, ...{userName: user.userName}
)
)
)
)
);
您可以在这里看到一个类似的工作示例,在 stackblitz 上, https://stackblitz.com/edit/rxjs-concatmap-issue-stackoverflow 其中“结果”是使用 concatMap 和 “result2”是我期望工作的非工作方式
【问题讨论】:
-
你可以用
mergeMap代替concatMap。 -
@martin
mergeMap给了我与concatMap相同的问题。 (而且它们实际上是非常相似的运算符。我正在寻找不同的解决方案) -
如果
mergeMap的行为相同,那么看看assistsAPI$.find()是什么,因为它可能没有像您期望的那样发出项目。 -
后端是 FeathersJS。我确定assassAPI$.find() 会发出什么。这不是重点。但我很感激你试图提供帮助,谢谢:)
标签: typescript rxjs