AngularFire2 получить аутентифицированный идентификатор пользователя в Typescript


Я пытаюсь понять, как я могу получить uid аутентифицированного пользователя Firebase в TypeScipt:

<div> {{ (user | async)?.uid }} </div>

У меня есть следующий код TS:

import { AngularFireAuth } from 'angularfire2/auth';
import * as firebase from 'firebase/app'

@Component({
  selector: 'app-user-portal',
  templateUrl: './user-portal.component.html',
  styleUrls: ['./user-portal.component.css']
})
export class UserPortalComponent implements OnInit {
  user: Observable<firebase.User>;

  constructor(
              public afAuth: AngularFireAuth
  ) {
    this.user = afAuth.authState;
  }

  ngOnInit() {

  }
}

Все, что я прочитал, предполагает, что мне нужно получить доступ к свойству id...

this.afAuth.auth.currentUser.uid

... но это не похоже на разоблачение. Если я изменю это на...

this.afAuth.auth.currentUser.toJSON()

... и отправьте это на консоль, тогда действительно я вижу свойство uid. Как я могу получить эту собственность?

Это даже правильный способ, чтобы получить идентификатор пользователь? Было бы...

this.afAuth.auth.currentUser.getIdToken()

... быть лучше? Если это лучше,я также не вижу, как получить жидкость из этого. Предложения?

1 3

1 ответ:

Вы можете получить uid от idToken Observable

this.afAuth.idToken.subscribe(user => {
            this.user = user;
            this.lists = this.af.list(`/lists/${user.uid}`);
        });

Имейте в виду, что это наблюдаемое, что означает, что вы можете создать цепочку, используя это в качестве основы с mergeMap, map, и т.д.