如何链接 .where 以进行 firebase 查询

How to chain .where for firebase query

我的应用程序允许用户定义后端字段(多个),然后使用 'rules' 将它们链接(通过循环)到集合中的 return 相关文档。

 let eeRef = this.afStore.collection<any>(`.../Collections/EmpSnapshot`).ref
 let eeDoc: any = null
 if (u.bAccessAll) {
     eeDoc = eeRef
 } else {
    for (let r of u.rules) {
        eeDoc = eeRef.where(r.field, r.condition, r.value)
    }
 }

await eeDoc.get()
.then(res => {
    for (let ee of res.docs) {
        emails.push(ee.id)
    }
}).catch(err => {
    console.log(`Error query-ing 'EmpSnapshot': `, err)
})

但实际上,eeDoc 变量只能识别循环中的最后一个条件,而不能将所有条件链接起来。例如,如果我的规则是

我希望 return 所有全职财务人员,但我的代码只会 return 'Finance' 员工 如何修复我的代码以链接 .where 条件?

您将在循环的每次迭代中覆盖 eeDoc

这应该更接近你想要的:

 let eeDoc: any = eeRef

 if (u1.bAccessAll) {
    for (let r of u.rules) {
        eeDoc = eeDoc.where(r.field, r.condition, r.value)
    }
 }