Angular и Firestore: получить UID пользователя, аутентифицированного для запроса в конструкторе - PullRequest
0 голосов
/ 24 марта 2020

Я новичок в Angular 2.x и Firebase.

Я пытаюсь получить UID аутентифицированного пользователя, чтобы сделать запрос в Firestore. UID возвращает значение в console.log, но, очевидно, я не могу добавить его в свой запрос для выполнения запроса. Вот как я это сделал:

  constructor(private afAuth: AngularFireAuth, private db: AngularFirestore) {
    this.afAuth.authState.subscribe( user => {
      this.usuariosRef = db.collection(this.dbPath, ref => ref.where('userId', '==', user.uid));
    });
    console.log(this.afAuth.authState);

  }

Это лучшее решение для этого?

1 Ответ

0 голосов
/ 24 марта 2020

db.collection возвращает Observable, поэтому вам также необходимо подписаться на это

или использовать switchMap и подписаться один раз.

constructor(private afAuth: AngularFireAuth, private db: AngularFirestore) {
    this.afAuth.authState
    .pipe( 
        switchMap(user => db.collection(this.dbPath, ref => ref.where('userId', '==', user.uid)))
    )
    .subscribe(data => {
        console.log(data);
    })

    console.log(this.afAuth.authState);

  }

ps Эти коды обычно следует размещать внутри ngOnInit() не в constructor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...