在我的函数中我有两个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
})
})
}
答案 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
})
})
}