Firestore where子句没有条件。

时间:2018-02-28 07:51:09

标签: javascript firebase vue.js google-cloud-firestore

在我的函数中我有两个where子句。我想要的是检查文件是否退出,找到两个ID。但是当我运行它时,它会返回所有收集记录。任何人都可以告诉我哪里搞砸了?

setApplyStatus() {
   var query = firebase.firestore().collection('applications')
   query.where("jobSeekerId", '==', this.jobSeekerId).get()
   query.where("jobId", '==', this.job.id)
   query.get().then(querySnapshot => {
    querySnapshot.forEach(doc => {
     console.log(doc.data())
     console.log('already exists')
     this.applyStatus = true
    })
   })
 }

5 个答案:

答案 0 :(得分:4)

您没有正确链接查询子句。此外,您在链中间调用了get()。这几乎肯定不是你想要的。每个查询对象都建立在最后一个查询对象上,你应该只对链中的最终查询得到():

setApplyStatus() {
  var query = firebase.firestore().collection('applications')
    .where("jobSeekerId", '==', this.jobSeekerId)
    .where("jobId", '==', this.job.id)
    .get().then(querySnapshot => {
      querySnapshot.forEach(doc => {
      console.log(doc.data())
      console.log('already exists')
      this.applyStatus = true
    })
  })
}

答案 1 :(得分:0)

尝试在 firebase 上为您的查询创建索引,因为没有索引,它将无法显示您的结果。您可以在错误中获取在控制台上创建索引的链接,因此请检查您的控制台

答案 2 :(得分:0)

setApplyStatus() {
  var query = firebase.firestore().collection('applications')
  query = query.where("jobSeekerId", '==', this.jobSeekerId)
  query = query.where("jobId", '==', this.job.id)
  query = query.get().then(querySnapshot => {
    querySnapshot.forEach(doc => {
     console.log(doc.data())
     console.log('already exists')
     this.applyStatus = true
    })
   })
 }

答案 3 :(得分:0)

citiesRef.where("state", "==", "CA", "||", "state", "==", "AZ")

或者更好

citiesRef.where("state == CA || state == AZ") 来源:Firebase GIT

答案 4 :(得分:0)

对于在 2021 年观看此内容的新用户。接下来是代码: 附注。没有更多的“==”子句,现在是“isEqualTo:参数”

void setApplyStatus() {
    var query = firebase.firestore().collection('applications');
    query = query.where("jobSeekerId", isEqualTo: this.jobSeekerId)
    query = query.where("jobId", isEqualTo: this.job.id)
    query = query.get().then(querySnapshot => {
         querySnapshot.forEach(doc => {
         console.log(doc.data())
         console.log('already exists')
         this.applyStatus = true
         })
       })
  }