2017-06-29 15 views
0

私は、Angular 4、ngrx、AngularFire2でプロジェクトを構築しました。私は現在ログインしているユーザーのuidを取得して、私の店に入れようとしています。AngularFire2 return ngrxエフェクトに適用可能

ご意見やご協力をいただければ幸いです。

エラー

ERROR TypeError: Cannot read property 'map' of undefined 
    at SwitchMapSubscriber.project (auth.effects.ts:22) 

影響コード

@Effect() getAccountId$ = this.actions$ 
      .ofType(ActionTypes.GET_ACCOUNT_ID) 
      .map(action => 
// This is line 22 where the error is coming 
       this.authService.getCurrentUserId() 
        .map(authObject => ({ type: ActionTypes.GET_ACCOUNT_ID_SUCCESS, payload: authObject })) 
        .catch(() => Observable.of({ type: ActionTypes.GET_ACCOUNT_ID_ERROR }))); 

サービスコード

のuserId:任意の; //任意のものとして宣言されます。これをObservableにしようとすると、this.userId = user.uidでコンパイルエラーが発生します。次のようにそれはあなたの助けをみんなに

userId: any; 

    getCurrentUserId(): Observable<any> { 

     this.afAuth.authState.subscribe(
      (user: firebase.User) => { 
      if (user != null) { 
       this.userId = user.uid; 
       console.log('constructor auth object: ', user); 
       console.log('constructor userId: ', this.userId); 
      } 
      }); 

     return this.userId; 
     } 
+0

'.ofType(ActionTypes.GET_ACCOUNT_ID)'行の前後に '.do(res => console.log(res))'を実行するとどうなりますか? – crash

+0

あなたの 'this.userId'は' Observable'だとは思いません。 –

+0

こんにちは、お返事ありがとうございます。コンパイルエラーが発生するので、私はその行の前に置くことはできませんが、Object {type: "GET_ACCOUNT_ID"、ペイロード: "}}を取得した後、私は問題が何かを解決し、それを修正する方法がわからない。基本的にauthオブジェクトの呼び出しはサブスクリプションなので、サブスクリプションが終了する前にthis.userIdをエフェクトに戻しますので、this.userIdが返されますundefined – ccocker

答えて

0

おかげで観察可能に文字列を割り当てることはできませんと言ってafAuthへの呼び出しでは、最終的な解決策は: -

影響コード

@Effect() getAccountId$ = this.actions$ 
     .ofType(ActionTypes.GET_ACCOUNT_ID) 
     .switchMap(action => 
      this.authService.getCurrentUserId() 
       .map(authObject => ({ type: ActionTypes.GET_ACCOUNT_ID_SUCCESS, payload: authObject })) 
       .catch(() => Observable.of({ type: ActionTypes.GET_ACCOUNT_ID_ERROR }))); 

サービスコード

getCurrentUserId(): Observable<firebase.User> { 

return this.afAuth.authState; 

}

関連する問題