私が観察として、ユーザデータをとる関数を作成し、追加/最初に観察からのデータを使用してクエリからのデータをマージしようとしていますが、このすべてを返しますデータ1の観察可能として、私はこれを行うことができますが、ここで ネストされた観測は:観察可能なのプロパティとして、観察を追加し、それをアンラップ
観測可能
のネストされたリターンを操作することはできませんその上にプロパティとして観測可能で観察を返す関数と呼ばれる休日getAllUsersWithHolidays() {
return this.users.map(items => {
for (let item of items) {
item.holiday = this.af.database.list('Holiday',
{
query: {
orderByChild: 'userIdKey',
equalTo: item.$key
}
}
)
}
return items;
});
}
問題があります私は休日に格納されたデータを引き出すように呼び出すときに発生する
this.summary$ = this.UserListService.getUserByEmail().mergeMap(user => { //get the user details to filter by team
return this.HolidayService.getAllUserWithHolidays().map(data => {
return data
.filter(team => team.team === user[0].team) //filters users by team
.map(item => { //map over combined data
return item.holiday
.map(hol => { // Hol is observable, build with property daysTaken
return {
firstname: item.firstname,
surname: item.surname,
holiday: hol.reduce((prev, curr) => {prev + curr.daysTaken, 0) //cannot access hol data
}
});
});
})
})
その後非同期でアンラップ
{{summary$ | async | json}}
観測可能な休日を超えるマッピングが、私がデータにアクセスすることができないようですか?おそらくまだ私が購読していないからでしょうか?
私はむしろプロパティが、私はむしろそれ最初
を計算しますgetAllUsersWithHolidaysから返されるので、代わりにこの
{user: 'exampleName', holiday:fireBaseListObservable}
としてこの返す項目の私はすでに計算され、それを返す、観察を持っていないと思います
{ user:'exampleName' , holiday: 20 }
しかし、これはまた、私の目を逃れていること...
getAllUsersWithHolidays() {
return this.users.map(items => {
for (let item of items) {
item.holiday = this.af.database.list('Holiday',
{
query: {
orderByChild: 'userIdKey',
equalTo: item.$key
}
}
).reduce((prev, curr) => prev + curr.daysTaken, 0)
}
return items;
});
}
私はこのようにすることができると思っていましたが、これはまだ観察可能なものを返します。もちろん、私はここで購読して何も返すことができません。
flatMapはあなたの友人 –
flatMapは良い点だ –