【问题标题】:Firestore get values into array, instead it comes as undefinedFirestore将值放入数组中,而不是未定义
【发布时间】:2018-08-18 06:32:48
【问题描述】:

我目前正在使用前端框架 Ionic 和带有 typescript 的 angularjs 开发移动应用程序,而后端我使用的是 firebase。我的问题是,当我调用我的 firebase nosql 数据库时,我无法将我的项目放入 typescript 数组中以便将数据显示到屏幕上,因为当我调用包含值的变量时,它是未定义的。这是我的代码:

getSingleDatabase(){
this.collectionReference=this.db.collection('posts');
      this.collectionReference.get()
  .then(snapshot =>{
  snapshot.forEach(doc => {

    this.firstGet.push(doc.data());
  });
})
.catch(err =>{
  console.log(err);
});
return this.firstGet;

}

【问题讨论】:

    标签: typescript firebase ionic-framework google-cloud-firestore


    【解决方案1】:

    Firstore API 是异步的,这意味着您对 get() 的调用会立即返回一个承诺,该承诺指示何时实际完成提取。在您要查找的文件兑现承诺之前,可能需要任何时间。因此,您的 getSingleDatabase 函数将在this.firstGet 中提供数据之前返回。如果您在代码的每个阶段都放置日志语句,您将能够明白我的意思。

    了解数据何时完全可用的唯一方法是使用 get() 返回的承诺,这意味着在承诺履行之前,您不应期望 this.firstGet 包含任何内容。

    Please read more about why Firebase APIs are asynchronous 以及对他们的期望。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多