1
我有一個假日列表,每個假日都附帶一個用戶標識。我想將檢索到的用戶數據合併到每個節假日記錄中,以便返回單個可觀察節點。如何合併屬於另一個可觀察對象的observable
我創造了這個功能
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
在第一個例子中有循環它只返回最後的結果,所以這種技術不工作
我已更新問題以顯示假期是fireBaseListObservable。如果我用fireBaseListObservable flatMap(或rxjs5中的mergeMap)替換swtich map,給userIdKey上的typecript alert'屬性不存在type any',這是導致問題的原因。爲什麼不在數組上進行firebase映射? – Mangopop
這取決於你如何輸入你的對象,你可以嘗試下面的'$ {item [「userIdKey」]}' - 如果可行,那麼在某些地方使用或錯誤地設置類型是個問題,但是很難說沒有看到更多的代碼,因爲在你提供的代碼中,你根本沒有設置任何類型 – olsn
我會做一個蹲點,看這個空間! – Mangopop