2017-10-20 45 views
2

Im créer un profil d'utilisateur dans firebase avec ce code:Récupération des données de profil utilisateur de firebase et l'affichage

username: string 
msgnumber: number 
level: number 

constructor(private fire:AngularFireAuth,private db :AngularFireDatabase,public navCtrl: NavController, public navParams: NavParams) { 

} 

createProfile() { 

    this.fire.authState.take(1).subscribe(auth => { 

    this.db.object(`profile/${auth.uid}`).set({ 
     username: this.username, 
     msgnumber: 0, 
     level: 0 
    }).then(() => 
     this.navCtrl.setRoot(TabsPage)); 
    }) 
} 

Il travaille. Maintenant, j'essaie de prendre les données de l'utilisateur et l'afficher sur leur page de profil. J'ai essayé quelque chose comme ça, mais il semble que ça ne fonctionne pas. Le problème est que je ne pouvais pas obtenir l'idée d'observables d'objet/liste ou généralement comment récupérer des données et comment les observables d'objet fonctionnent. Internet vérifié et je suppose que les gens les utilisent pour récupérer des données? base de données

: db

Répondre

1

Vous êtes sur la bonne voie. Pour finalement récupérer les données, vous devez subscribe à la deuxième observable qui est affectée à this.profileData.

Comme ceci:

this.fire.authState.subscribe(auth => { 
    // subscribe to the observable 
    this.db.list(`profile/${auth.uid}`).valueChanges().subscribe(profile => { 
    console.log(profile); 
    }); 
}); 

Maintenant, pour éviter l'imbrication, vous pouvez utiliser l'opérateur qui switchMap rxjs vous offre.

Le résultat ressemble à ceci:

this.profileData$ = this.fire.authState.switchMap(auth => this.db.list(`profile/${auth.uid}`).valueChanges()); 
this.profileData$.subscribe(profile => console.log(profile)) 
+0

merci pour le answer.i essayé et ont _this.db.list (...) n'est pas souscrire une erreur de fonction.. avez-vous une idée ? –

+0

quelle version de 'angularfire2' utilisez-vous? – Orlandster

+0

dernière one.5 je suppose –