現在認証されているユーザーangularfire2(angular)を取得して、クラスメソッドに間に合うように使用できるようにするにはどうすればよいですか?

ジェイミー

currentUserIdを必要とする多くのメソッドがあります。私は自分のAuthServiceを注入して、次のようにユーザーを取得して保存しています。

// AuthServiceコード

getAuthorizationState() {
    return this.afAuth.authState;
}

//フィードコンポーネントコード

constructor(...auth: AuthService...) {
    this.user = this.auth.getAthorizationState();
    this.user.subscribe(
        (value) => {
            console.log('value', value);
            this.currentUser = value;
        }
    );
}

// This tends to throw an error can not get property uid of undefined
getUserFeed(uri: string): Obervable<any> {
    return this.getFeed(`feed/${this.currentUser.uid})`)
}

// So have been resorting to this 
getUserFeed(uri: string): Obervable<any> {
    this.user.map((user) => {return user.uid})
        .flatMap((currentUserId) => {
          return this.getFeed(`feed/${currentUserId})`)
         });

    }

問題:すべてのメソッドでそれを行わなければなりませんでした。Angularjsでは、この問題を解決するためにresolveメソッドを使用していると信じていることを覚えています。

質問:現在認証されているユーザーの情報を取得して保存するための「アプリグローバル」な方法はありますか?コンポーネントまたはインジェクターサービスのメソッドを呼び出すときにすでに存在しますか?

ジェイミー

角ばったギッターに行き、私がやっていた観察可能なチェーンは確かに使用するパターンであると言われました。少し変更し、サービスとコンポーネントで使用するようにリファクタリングします。

getHomeFeedPostsWrapper(): Observable<any> {
    return getUserId().map((user) => {
        return user.uid;
    }).switchMap((userId) => {
        return this.friendly.getHomeFeedPosts(userId);
    });
}


/**
 * Helper methods
 */

getUserId() {
    return this.auth.getAuthState().map((user) => {
        return user.uid;
    });
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ