gpt4 book ai didi

javascript - Angular - 将两个可观察结果合并为一个

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:33 25 4
gpt4 key购买 nike

我的数据库中有两个节点 - 一个是 allUsers,一个是 usersChildren

例如:

allUsers: { user1: {...}, user2: {...}}
usersChildren: { user1: {...} }

在这种情况下,user1 有子数据而 user2 没有。

我想检索所有用户对象的列表,在每个用户的对象中,我希望从 usersChildren 节点(如果有的话)添加子数据。

但是,我并不真正了解如何做到这一点。我尝试了以下方法,但这导致只获取了 child 的信息,而不是具有子信息和用户元数据的组合对象。

this.af.getObservable(`allUsers`).pipe(map(allUsers =>
allUsers.map(user => this.af.getObservable(`usersChildren/${user.id}`)))
.subscribe(allUsersData => this.userList = allUsersData);

实现我的愿望的最佳方式是什么?

最佳答案

试试这个

this.af.getObservable(`allUsers`)
.pipe(
mergeMap(users => forkJoin(
users.map(user => this.af.getObservable(`usersChildren/${user.id}`))
))
);

您进行 HTTP 调用以获取所有用户,然后使用 forkJoin 为每个用户进行 1 次调用。调用是通过 Array.map 进行的,它将您的用户转换为 HTTP 调用。

现在你可以这样订阅了

this.myService.getAllUsers().subscribe(users => { console.log(users); });

关于javascript - Angular - 将两个可观察结果合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52165941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com