1

Je suis nouveau angulaire et firebase, laissez-dire que j'ai un service comme suivi, j'utilise angularfire2 pour travailler avec la base de donnéesimpossible d'extraire les informations de connexion utilisateur dans angular2 et firebase?

import { Injectable } from '@angular/core'; 
import { AngularFireDatabase, FirebaseListObservable, 
FirebaseObjectObservable } from 'angularfire2/database'; 
import { AngularFireAuth } from 'angularfire2/auth'; 
import { AuthService } from '../../../services/auth.service'; 

@Injectable() 
export class GroupsService { 

user: User; 

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

this.afAuth.authState.subscribe((loggedInUser) => { 
    this.user = { 
    email: loggedInUser.email, 
    id: loggedInUser.uid 
    }; 

    console.log(this.user) //getting logged in user info correctly 
}); 
} 

getGroups():FirebaseListObservable<any[]>{ 
console.log(this.user); //unable to get logged in user 
return this.db.list('groups',{ 
    query : { 
    orderByChild: 'createdBy/email', 
    equalTo: this.user.email 
    } 
    }); 
} 

sur la méthode getGroups() Je reçois des groupes en fonction connecté Adresse e-mail utilisateur, cette fonction, sur console.log(this.user); je reçois undefined, peut quelque chose s'il vous plaît comment résoudre ce problème?

+0

Jetez un oeil à ma réponse ici. On dirait un problème similaire https://stackoverflow.com/a/46484449/2521893 –

+0

@FredrikLundin merci pour la réponse, mais j'ai des doutes sur share(), mon application fonctionne même si je supprime share() aussi, vous pouvez S'il vous plaît dites-moi quel est le but de partager() –

+0

En utilisant partage, l'ID utilisateur ne sera récupéré qu'une fois, et non à chaque demande. Cela dépend de comment vous voulez que ça fonctionne –

Répondre

0

Je résolu cette question par les informations contenues dans ce link

@Injectable() 
export class GroupsService { 

/** 
* Observable for firebase user 
*/ 
loggedInUser$: Observable<firebase.User>; 


/** 
* 
* @param authService 
* @param db 
*/ 
constructor(
private authService: AuthService, 
private db: AngularFireDatabase, 
) { 

this.loggedInUser$ = authService.user.share(); 
} 

/** 
* 
*/ 
getGroups():FirebaseListObservable<any>{ 

    return this.loggedInUser$.mergeMap(user => { 

    let email = user.email; 
    return this.db.list('groups', { 
    query: { 
     orderByChild: 'createdBy/email', 
     equalTo: email 
    } 
    }) 
    }) as FirebaseListObservable<any[]> 
} 
}