1

Ionic(AngularFire2)アプリケーションでは、Firebaseデータベースから関連データを取得するためにFirebase User UIDを取得する必要があります。たとえば、Firebaseにはノード( '/ users')があり、そのキーはFireBase Auth User UIDです。AngularFire2がUIDを取得し、どのページでも使用しています

{ 
    "users" : { 
    "LYW6i8sTbWauCvkXULIbszIWOdm1" : { 
     "cellPhone" : "123321", 
     "name" : "Name1", 
     "userType" : "0" 
    }, 
    "i4KSAzO2UhakowLKOZCa0ZeohRH3" : { 
     "cellPhone" : "43343", 
     "name" : "Name2", 
     "userType" : "1" 
    } 
    } 
} 

私はobservablesを使用して、すべてのページに対して何度もUIDを取得しています。私はたくさんの加入者がいると思います。イオンアプリケーションがFirebase認証サーバーにユーザーUIDを要求するたびに、

たとえば、

export class AccountProfilePage { 

     user = {} as User 
    constructor(public navCtrl: NavController, public navParams: NavParams, 
    private afDb:AngularFireDatabase, private afAuth:AngularFireAuth) { 
    } 

    updateProfile(){ 
     this.afAuth.authState.subscribe(authState=>{ 
     this.afDb.object('users/'+authState.uid).update({ 
      cellPhone:this.user.cellPhone 
     }) 
     }) 
    } 
} 

正しい方法ですか?

+1

サービスを作成してサービスに登録する必要があります。サービスをインストールするときは、一度作成したサービス –

答えて

0

app.module.tsProvidersセクションに含まれるサービスを作成します。このようにして、サービスはアプリケーション全体にその状態を保持します。

app.module.ts

@NgModule({ 
    providers: [ 
    AuthService 
    ] 
}) 
export class AppModule {} 

auth.service.ts

@Injectable() 
export class AuthService { 
    private uid: string; 

    setUid(uid: string): void { 
    this.uid = uid; 
    } 

    getUid(): string { 
    return this.uid; 
    } 
} 

アプリケーションにユーザーがログインが任意のページで、その後setUid(usersUid)を行うと、あなたは、コンストラクタでauth.serviceを含めるとgetUidを行うと、それが取得することができますサービスのUID。

export class AccountProfilePage { 
    constructor(private authService: AuthService) {} 

    someMethod() { 
     this.authService.getUid(); // Returns UID 
    } 
} 
+0

ありがとうございます。私は、setUIDメソッドでは、authStateを取得するサブスクリプションメソッド()を使用しているのでしょうか?私の知る限り、その動作はストリームと同じですか?私たちは、常にユーザーのauthstateを探してストリームが開かれると思いますか? – umki

+0

もう1つの質問ですが、私はどのページにもAngularFireAuthサービスを注入しています。独自の状態を持ち、アプリ全体にその状態を保持していませんか? – umki

+0

AngularFireAuthをルートモジュールに注入している状態では、状態はアプリケーション全体にわたっていますか? – sketchthat

関連する問題