创建查询快照以监听实时更改

时间:2020-06-28 07:16:09

标签: javascript firebase google-cloud-firestore

我创建了一个函数,该函数使用if条件从Firestore获取数据。我已经用.get()方法实现了它,但是它不能实时更新,我的意思是如果服务器中有任何记录被更新,它就不会在这里反映出来。

这是我的职能

   async getMyPosts() {
    this.query = firebase.firestore().collection('complaints')
    if (this.complaint_status_filter_active==true) {  // you decide
      this.query = this.query
      .where('complaint_status', '==', this.complaint_status_filter_value)
      .limit(5)
    }
    const questions = await this.query.get()
      .then(snapshot => {
        snapshot.forEach(doc => {
          console.log(doc.data())
        })
      })
      .catch(catchError)
  }

应该使用什么代替get()进行实时更新

编辑1

在下面的示例中,我可以使用Angular Firestore使用快照更改,但是在这里,我无法使用if条件

如何在此处使用if子句添加where条件?代码:

  this.firestore.collection('complaints' , ref => ref
.where('complaint_status', '==', this.complaint_status_filter_value)
.limit(5)
.orderBy("complaint_date","desc") 
)
.snapshotChanges()
.subscribe(response => {

1 个答案:

答案 0 :(得分:2)

使用onSnapshot()获取实时更新,如documentation所示。

this.query.onSnapshot(doc => {
    // ...
})