【发布时间】:2021-10-07 20:49:02
【问题描述】:
我正在对一个结构如下的小型数据库运行基本查询:
- 汽车制造商:
- 车型:
- 汽车颜色:
假设前 2 个字段具有特定信息:
- 汽车制造商:“福特”
- 汽车型号:“野马”
但是对于第三个字段,我可以查询所有具有特定颜色的值:红色、蓝色等。我的问题是如何使用以下方法查询第三个字段:
- carColor:“所有颜色”
如果“所有颜色”不是特定值?我使用过: .whereField(CAR_COLOR, isGreaterThanOrEqualTo or arrayContains or arrayContainsAny, etc) 但它不起作用。我没有得到任何结果。有任何想法吗?谢谢!
【问题讨论】:
-
如果您希望它返回所有内容而不管该字段中的颜色是什么,为什么要使用
whereField查询? -
carColor 字段是为最终用户提供一个选项,如果他们想要过滤到特定颜色(红色、蓝色等),或者他们想要查看所有内容而不管他们可以使用的颜色如何“所有颜色”
-
好的。所以,如果他们选择“所有颜色”,那么我很难理解为什么在这种情况下你会在
carColor上使用whereField。 -
“所有颜色”未分配给任何 carColor 对象。我使用 whereField 以便用户可以过滤到特定的颜色。那么让我问你这个问题,如果在查询中我选择“所有颜色”,是否可以绕过 carColor 字段?但是如果查询有特定颜色“红色”,不要绕过并运行它?
-
最简单的,你可以使用
if { } else { }来运行不同的查询。但是,如果您想使用相同的查询链,我在下面添加了一个答案,允许您使用条件whereField查询。如果您不想想要运行查询,您可能希望将false传递给useCondition。
标签: swift google-cloud-firestore