Получить данные от подписки в Ionic - PullRequest
0 голосов
/ 17 февраля 2019

У меня возникают трудности с получением данных с подпиской в ​​конструкторе Ionic-страницы, в основном мне нужно сделать подписку, чтобы получить список и показать пользователю, но я получаю неопределенные данные

В моем конструктореЯ делаю это:

this.getUser(this.auth.currentUser().uid);
console.log(this.user);

Мой getUser ():

getUser(uid) {
  const self = this;
  this.auth.getUserData(uid).subscribe(function(doc) {
  if (doc.exists) {
    self.user = doc.data();
  } else {
    console.log("No such document!");
  }
 });
};

Но когда я вызываю другую функцию с помощью кнопки, я получаю данные:

userf(){
  console.log(this.user);
}

Obs: я использую Firestore

1 Ответ

0 голосов
/ 17 февраля 2019

Причина, по которой он дает вам неопределенность, заключается в том, что ваш метод getUser является асинхронным, и когда вы вызываете console.log, пользовательское значение еще не получено.

Таким образом, вы должны получить доступ к пользовательскому значению внутри вашего метода getUser после того, каконо получено.

Теперь вы также пытаетесь передать this в метод getUser с помощью const.начните использовать жирные стрелки, которые не создают свою собственную область видимости (this):

getUser(uid) {
this.auth.getUserData(uid).subscribe((doc) => {
  if (doc.exists) {
    this.user = doc.data();
  } else {
    console.log("No such document!");
  }
 });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...