2

ユーザーがログインしているときに、$key が auth.uid に等しい Firebase データベースの '/users/$key' URL から、currentUser FirebaseObjectObservable にユーザー データを取得したいと思います。ユーザーがログアウトしたときも同様です。 、 currentUser は自動的に 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/Observable とは異なります。

アップデート:

これは私がそれを解決した方法です:

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>();
  });
}

それでも、それは私には正しくありません。このままでいいのでしょうか?

4

1 に答える 1

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>

これは、ユーザーからすべてのデータを取得する方法です

于 2016-11-10T09:43:36.187 に答える