rxjsredux-observablerxfire

Trouble using catchError with RxFire firestore collectionData


I want to be able to respond to errors from a call to collectionData. I added a catchError but it never gets called. In fact, the collectionData emits a result with no elements.

export const bundleEpic = action$ => action$.pipe(
  ofType(BUNDLES_LOAD),
  tap(action => console.log(`Received action: type=${action.type}`)),
  switchMap(() => (
    collectionData(bundlesRef, 'id')
    .pipe(
      tap(docs => console.log(`bundleEpic: size = ${docs.length}`)),
      map(docs => publicBundlesLoadSuccess(docs)),
      catchError(error => from(publicBundlesLoadFail(error))
    )
  ))
)

What is the proper way to handle errors using collectionData?


Solution

  • catchError will catch errors returned by the observable. In your case that is collectionData. I'm not familiar with RxFire but if you say that collectionData emits a result with no elements then it makes sense for catchError to not be called. Empty results is still considered a (successful) result. Try making collectionData fail on purpose to see if you'll get an error in catchError.