【发布时间】:2019-03-05 22:09:05
【问题描述】:
我有以下功能
getParticipations(
meetingId: string
): Observable<Participation[]> {
return this.meetingCollection
.doc(meetingId)
.collection<ParticipationDto>('participations')
.snapshotChanges()
.pipe(
map(actions =>
actions.map(m => {
const participationDto = m.payload.doc.data() as ParticipationDto;
const id = m.payload.doc.id;
return new Participation(id, participationDto.vart, null);
})
)
);
}
在participationDto 中有一个文档引用,我想获取该文档,以便返回一个对象(参与)与引用文档的映射。
类似
getParticipations(
meetingId: string
): Observable<Participation[]> {
return this.meetingCollection
.doc(meetingId)
.collection<ParticipationDto>('participations')
.snapshotChanges()
.pipe(
map(actions =>
actions.map(m => {
const participationDto = m.payload.doc.data() as ParticipationDto;
const id = m.payload.doc.id;
return this.participantCollection.doc(participationDto.participant.id).get().pipe(
map(pp => {
return new Participation(id, participationDto.vart, pp.data() as Participant);
})
);
})
)
);
}
然后它返回一个Observable<Observable<Participation>[]>
我可能需要合并、映射或类似的东西,但我找不到正确的方法来丰富我的 Observable 与我的对象映射并保留我的 Observable<Participation[]>
感谢您的帮助
【问题讨论】:
-
你可以尝试使用 flatMap 代替地图(内部地图)。
-
@ShubhamChaudhary 当我用 flatMap(pp => .. 替换 map(pp => .. 然后我得到一个 Observable
[]> ... -
我想保留数组,但删除 observables 的两个“层”...... TT
标签: angular typescript google-cloud-firestore angularfire2