从Ionic订阅中获取数据

时间:2019-02-16 21:09:10

标签: ionic-framework google-cloud-firestore

我在Ionic页面的构造函数中很难通过subscribe获取数据,基本上我需要进行subscribe获取列表并显示给用户,但我不确定

在我的构造函数中,我这样做:

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

糟糕:我使用Firestore

1 个答案:

答案 0 :(得分:0)

它给您未定义的原因是因为您的方法“ getUser”是异步的,并且当您调用console.log时,尚未获得用户值。

因此,在收到getUser方法后,您应该在其中访问用户值。

现在您还尝试使用const将“ this”传递到getUser方法中。开始使用不创建自己范围的胖箭头功能(此):

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