注销后由于身份验证错误,使用firestore stateChanges方法的NGRX效果完成

时间:2019-01-28 19:15:23

标签: angular firebase google-cloud-firestore angularfire2 ngrx

我正在使用AngularFire2构建一个小型Angular聊天应用程序。 用户注销后,由于身份验证错误,使用AngularFire的.stateChanges().valueChanges()方法的所有NGRX效果都将完成。注销后如何保持效果“活跃”?

我已经尝试过将RXJS操作符takeUntil与某种auth Observable结合使用,以反映用户是否已登录。takeWhile也是一样。我已经尝试将catchError作为最后一个运算符,并在pipe()方法之后在一个额外的firestoreService.getUserFriends中进行了尝试。

NGRX效果:

@Effect()
query$ = this.actions$.pipe(
    ofType<Query>(SocialActionTypes.Query),
    withLatestFrom(this.store$),
    map(([action, storeState]) => {
      return storeState.auth.user.uid;
    }),
    exhaustMap(uid => this.firestoreService.getUserFriends(uid)),
    mergeMap(actions => actions),
    map(action => {
      return {
        type: `[Social] Friend ${action.type}`,
        payload: {
          ...action.payload.doc.data(),
          id: action.payload.doc.id
        }
      };
    })
);

firestoreService.getUserFriends方法:

getUserFriends(uid: string) {
  return this.afStore
    .collection<Friend>(`social/${uid}/friends`)
    .stateChanges();
}

0 个答案:

没有答案