[英]Handle http error using switchMap and return empty Observable
[英]How to handle an observable that may return empty when using switchMap RxJS
如何使用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
這是有道理的,因為在嘗試在switchMap的return語句中使用之前,submit submission$
解析為空對象。
那么如何使用RxJS來解釋這樣的場景呢? switchMap是否正確使用? 謝謝!
您可以在switchmap之前使用過濾器運算符。 您的代碼可能如下所示。
this.user$ = this.submission$.pipe(
filter(submissions => Object.keys(submissions).length > 0),
switchMap(
(submissions) => {
return this.db.collection$('users', ref => ref.where('userUID', '==', submissions[0].submissionUserUID ))
}
)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.