2016-08-04 3 views
2

사용자가 로그인 할 때 $ key가 auth.uid 인 My Firebase 데이터베이스의 '/ users/$ key'url에서 currentUser FirebaseObjectObservable로 사용자 데이터를 가져오고 싶습니다. 로그 아웃하면 currentUser는 자동으로 null이됩니다.AngularFire2에서 사용자가 로그인 할 때 (인증이 null이 아님) 객체를 가져 오는 방법은 무엇입니까?

필자는 내 템플릿에서 비동기 파이프를 사용해야하지만 아직 로그인 한 후에 만 ​​currentUser 데이터를 가져올 수 있으며 로그 아웃 한 후에도 메모리에 남아 있습니다 (내가 한 것처럼). auth 객체가 null이되면 자동으로 null이되도록하고 싶습니다.

import { Component } from '@angular/core'; 
import { AngularFire, FirebaseObjectObservable } from 'angularfire2'; 
@Component({ 
    selector: 'my-app', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'], 
}) 
export class AppComponent { 
    currentUser : FirebaseObjectObservable<any>; 

    constructor(public af: AngularFire) { 

    this.af.auth.subscribe(auth => { 
     console.log(auth); 
     this.currentUser = af.database.object('/users/' + auth.uid); 
     }); 
    } 

} 

내 템플릿에이 같은 것을 사용하는 것이 괜찮을 것 {{(currentUser | async)?.email}}

Observables은 지식의 나의 부족 문제는 여기에있다,뿐만 아니라 AngularFire 인증 개체는/내가 이해에서 관찰 가능한 rxjs 다르다 .

업데이트 :

이 내가 그것을 해결 한 방법입니다

constructor(public af: AngularFire) { 
this.af.auth.subscribe(auth => { 
    console.log(auth); 
    if(auth) 
    this.currentUser = af.database.object('/users/' + auth.uid); 
    else 
    this.currentUser = new FirebaseObjectObservable<any>(); 
    }); 
} 

아직 잘 나 생각하지 않습니다. 이런 식으로해도 괜찮습니까?

답변

2

다음은보기에서 uid를 표시하는 방법입니다. 너는 열심히하고있다. 이 객체를 FireBaseObjectObservable로 만들 필요가 없습니다. [인증을 수행합니다 모두를위한 당신

component.ts

export class DashboardComponent { 

      email:any; 
      userid: string; 
      constructor(public af: AngularFire) { 
      this.af.auth.subscribe(auth => { 
       console.log(auth.uid); 
       this.userid = auth.uid; 
       this.email = af.auth.getAuth().auth.email; 
      }); 
     } 
    } 

component.html

<h1>{{ userid}}</h1> 
<h1>{{email}}</h1> 

이것은 당신이에서 모든 데이터를 얻을하는 방법 당신의 사용자