Как получить данные из valueChanges AngularFirestore () - PullRequest
1 голос
/ 13 июня 2019

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

public getFullUserData(): User {
const userRef: AngularFirestoreDocument<any> = this.afs.doc(
  `users/${this.authState.uid}`);
return userRef.valueChanges().pipe(map((user: User) => user));
}

Что я пытаюсь добиться, это вывести объект User из наблюдаемого и вернуть его в этой функции ...

Чтобы быть точнымя хочу вернуть строгие данные, не наблюдаемые данными.Это вообще возможно?Или я должен вернуть наблюдаемые и подписаться на них позже?

Я знаю, что совершил какую-то фундаментальную ошибку, но сейчас я совершенно потерян ...

Может кто-нибудь объяснить, какдостичь этого?Я использую этот метод в сервисе, чтобы потом вызывать его в других компонентах ...

1 Ответ

0 голосов
/ 14 июня 2019

Разделите их.

const userRef: AngularFirestoreDocument = this.afs.doc(users/${user.uid});

userRef.valueChanges().subscribe(res=>{
    if(res){
       // work with data here
    }
});

Я думаю, что вы хотите вывести пользователя из метода без подписки, но я не уверен, что следую за вами.

this.afs.doc(users/${user.uid}).valueChanges().pipe(
    take(1)
).subscribe(data => {
    // work with data here
});

Может быть, вам нужна функция, которая выполняет вызов и возвращает пользователя, не тратя время на подписку?

function returnUser():user {
    this.afs.doc(users/${user.uid}).valueChanges().pipe(take(1)).subscribe(user => {
        return user;
    });
}

take(1) будет ждать получения первого ответа, а затем отписаться. Нет заметного обслуживания здесь!

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