我正在尝试实现逻辑或操作符在firestore查询。
db.collection('users').where('company_id', '==', companyId)
.where('role', '==', 'Maker')
.where('role', '==', 'Checker')
.where('role', '==', 'Approver')
.get().then(function(adminsSnapshot){
//Some processing on dataSnapshot
})
但这不是实现OR的正确方式。
我希望所有用户的角色'制造商,检查者或批准者'。
我如何在firestore查询中实现OR?Doc中没有任何内容。
4条答案
按热度按时间kpbpu0081#
**编辑(2019年11月)**Cloud Firestore现在支持“IN”查询(announcement),允许您执行一种类型的OR查询,查找同一字段中具有几个值之一的文档。
例如,对于上面的查询:
原答复
在Cloud Firestore中没有“OR”查询。如果你想在一个查询中实现这一点,你需要一个像
maker_or_checker_or_approver: true
这样的字段。当然,你总是可以做三个查询并在客户端连接它们。
6mzjoqzu2#
现在,Firestore新增了对
in
和array-contains-any
运算符的支持,允许在单个查询中查询多达10个值。https://firebase.googleblog.com/2019/11/cloud-firestore-now-supports-in-queries.html
因此,使用您的示例,查询将如下所示。
在上面的例子中,如果数据存储在数组中,则用
in
替换array-contains-any
。zysjyyx43#
你可以使用rxjs合并这些可观测的数据,参见下面的angular(6)示例;
5vf7fwbs4#
FTI
OR
查询现已在预览版中提供:)来源:https://cloud.google.com/firestore/docs/release-notes#March_24_2023