0

Firebaseデータベースから要求されたJSONオブジェクトからログインしたユーザーの 'userRole'を取得します。FirebaseからJSONオブジェクトのデータを取得できません

0:{$value: "[email protected]", $key: "email", $exists: ƒ} 
1:{$value: "password", $key: "password", $exists: ƒ} 
2:{$value: 1, $key: "userRole", $exists: ƒ} 
3:{$value: "", $key: "worksFor", $exists: ƒ} 

がどのように私は、このJSONオブジェクトから「USERROLE」にアクセスすることができます:私は、データベースから取得

ionViewWillLoad(){ 
    this.afAuth.authState.subscribe(user => { 
     this.ref = user.uid; 
     this.userService.getUserById(this.ref).subscribe(data => { 
      this.data = data 
      console.log(this.data); 
     }) 
    }); 
} 

ファイルは次のようになります。だから私は、次のコードを試してみましたか?私は 'data.userRole'、 'data [2]。$ value'を試しましたが、これらは機能しません。続き

は、データベースに新しいユーザーを追加するためのコードです:

getUserById(id){ 
    return this.afd.list('/users/' + id); 
} 

register(user){ 
    return this.afAuth.auth.createUserWithEmailAndPassword(user.email, user.password).then(data => { 
     this.afd.object('/users/' + data.uid).update(user); 
    }); 
} 

は、私はデータベースにデータを追加する方法に何か問題はありますか?

ありがとうございました!

+0

は、私はあなたがあなたの中にデータベース2の情報を持っていると思う - と/ユーザー/リアルタイムデータベース「テーブル」の認証テーブルを、そのどちらあなたがしたいですかアクセス? – Makah

+0

データを受信して​​いる場合は、現在ログインしているユーザー@Makah – vivekpadia70

+0

に基づいて/ user/tableからデータを取得したい場合は、データ["userRole"]経由でアクセスできますか? – Ayudh

答えて

0

Firebaseにはいくつかの製品がありますが、そのうちの2つを使用する必要があります。 Authenticationはユーザー認証を制御し、Realtime databaseは、他の情報をアドレス、電話、およびプロジェクトに関連する他のデータとして保存します。

私の場合、私はサービス内のユーザー情報をラップすることを好む - my example。フラグメント:

import { AngularFireDatabase } from 'angularfire2/database'; 
import { AngularFireAuth } from 'angularfire2/auth'; 

constructor(public afAuth: AngularFireAuth, private db: AngularFireDatabase) { } 

load() { 
    let promise = new Promise((resolve, reject) => { 
     this.afAuth.authState.subscribe((auth) => { 
      this.authState = auth 
      resolve(true); 
     }, 
      err => reject(err) 
     ); 
    }); 

    return promise; 
} 

get userID(): string { 
    return this.authenticated ? this.authState.uid : ''; 
} 

retrieveUser(): any { 
    if(this.authenticated === undefined){ 
     console.log('You need to authenticate first.'); 
     return null; 
    } 

    this.user = this.db.object('/users/'+ this.userID) 
        .valueChanges() 
        .publishReplay(1) 
        .refCount(); 


    return this.user; 
} 

Anが、私はこのように使用します。

this.authService.retrieveUser().subscribe(user => { 
    this.user = user; 
}); 
+1

ありがとう、それは魔法のように動作します。エラーは、オブジェクトを追加してデータベースからリストを要求していたことです。 – vivekpadia70

関連する問題