Firestore将值获取到数组中,而不是未定义的

时间:2018-03-09 16:18:44

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

我目前正致力于使用前端框架Ionic和angularjs与打字稿的移动应用程序,以及后端我使用firebase。我的问题是,当我调用我的firebase nosql数据库时,我无法将我的项目放入一个打字稿数组中,以便将数据输入到屏幕上,因为当我调用包含值的变量时,它会被视为未定义。这是我的代码:

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;

}

1 个答案:

答案 0 :(得分:1)

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

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

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