如何合并另一个observable属性的observable [英] How to merge an observable that is a property of another observable
问题描述
我有一个假期列表,每个都附有一个用户标识。我想将检索到的用户数据合并到每个节假日记录中,以便返回单个的可观察节点。
我创建了这个函数
$ p $ getAllHolidaysAndUsers(){
返回this.af.database.list('Holiday')。mergeMap(items => {
for(item item)){
item.user = this.af. database.object(`/ User / $ {item.userIdKey}`);
}
return items;
});
}
它返回一个像这样的对象
{
fromDate:'20 / 12/16',
toDate:'21 / 12/16',
user:fireBaseObservable
$ / code $ / pre
我想要一个像这样的对象
pre $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $'$'$'$ / $ /数组[1]
}
我正在努力访问用户
在单个订阅中可观察。目前我正在做嵌套订阅,我知道是不好的形式。
我已经设法得到一个类似的例子工作像这样
getHolidayInfo(){
return this.getHolidaysByUserId()。mergeMap(hol => {
return this.UserList。 getUserByEmail()。map(user => {
return {hol:hol.date,user:user [0]}
});
});
但是因为我必须循环项目
在第一个例子中,它只返回最后一个结果,所以这个技巧是不行的
这是抢劫犯 你可以这样做:
getAllHolidaysAndUsers(){
return this.holiday
.switchMap(items => Observable.from (item))
.flatMap(item => {
return this.af.database.object(`/ User / $ {item.userIdKey}`)
.map(user = > {
item.user = user;
return item;
});
})
.toArray();
}
I have a list of holidays each with a user id attached to them. I would like to merge the retrieved user data to each holiday record so it returns a single observable.
I created this function
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;
});
}
it returns an object like this
{
fromDate:'20/12/16',
toDate:'21/12/16',
user:fireBaseObservable
}
I would like an object like this
{
fromDate:'20/12/16',
toDate:'21/12/16',
user:Array[1]
}
I am struggling to access the user
observable in a single subscription. Currently I'm doing nested subscribes which I know is bad form.
I've managed to get a similar example working like this
getHolidayInfo() {
return this.getHolidaysByUserId().mergeMap(hol => {
return this.UserList.getUserByEmail().map(user => {
return {hol:hol.date, user:user[0]}
});
});
But because I have to loop through items
in the first example it only returns the last result, so this technique isn't working
You could do it like this:
getAllHolidaysAndUsers() {
return this.holiday
.switchMap(items => Observable.from(items))
.flatMap(item => {
return this.af.database.object(`/User/${item.userIdKey}`)
.map(user => {
item.user = user;
return item;
});
})
.toArray();
}
这篇关于如何合并另一个observable属性的observable的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!