我有一个假期列表,每个假期都附有一个用户 ID。我想将检索到的用户数据合并到每个假期记录中,以便它返回单个可观察值。
我创建了这个函数
getAllHolidaysAndUsers() {
return this.af.database.list('Holiday').mergeMap(items => {
for (let item of items) {
item.user = this.af.database.object(`/User/${item.userIdKey}`);
}
return items;
});
}
它返回一个像这样的对象
{
fromDate:'20/12/16',
toDate:'21/12/16',
user:fireBaseObservable
}
我想要一个这样的物体
{
fromDate:'20/12/16',
toDate:'21/12/16',
user:Array[1]
}
我正在努力访问user
可在单个订阅中观察到。目前我正在做嵌套订阅,我知道这是不好的形式。
我已经设法让一个类似的例子像这样工作
getHolidayInfo() {
return this.getHolidaysByUserId().mergeMap(hol => {
return this.UserList.getUserByEmail().map(user => {
return {hol:hol.date, user:user[0]}
});
});
但因为我必须循环items
在第一个示例中,它仅返回最后的结果,因此该技术不起作用
这是笨蛋 https://plnkr.co/edit/L3afagtLBfdscoShNKRl?p=preview