【发布时间】:2019-04-15 20:34:21
【问题描述】:
RxJS 应该如何处理以下场景?
我有一个 observable,它通过从 url 参数中提取的 ID 查询我的 Firestore 数据库的提交:
this.submission$ = this.db.collection$('submissions', ref => ref.where('submissionArtistUID', '==', this.artistParam));
对于订阅此 observable 的元素,submission$ 返回一个提交对象数组。因此,一旦submission$ 已解决,我就可以使用switchMap 查询我的users 表:
this.user$ = this.submission$.pipe(
switchMap(
(submissions) => {
return this.db.collection$('users', ref => ref.where('userUID', '==', submissions[0].submissionUserUID ))
}
)
)
但是,提交查询不能保证返回任何内容。因此,当我在返回空的提交上使用switchMap 时,我无法访问以下属性:submissions[0].submissionUserUID,并且在控制台中显示此错误:
Cannot read property 'submissionUserUID' of undefined
这是有道理的,因为submission$ 在尝试在 switchMap 的返回语句中使用之前解析为一个空对象。
那么我该如何使用 RxJS 来解释这样的场景呢? switchMap 是正确的使用方法吗?谢谢!
【问题讨论】:
标签: angular rxjs angularfire2