swift - Firebase - 查询具有特定和非特定值的对象的属性
问题描述
我正在对一个结构如下的小型数据库运行基本查询:
- 汽车制造商:
- 汽车模型:
- 汽车颜色:
假设前 2 个字段具有特定信息:
- 汽车制造商:“福特”
- 车型:“野马”
但是对于第三个字段,我可以查询具有特定颜色的所有值:红色、蓝色等。我的问题是如何使用以下方法查询第三个字段:
- 汽车颜色:“所有颜色”
如果“所有颜色”不是特定值?我使用过: .whereField(CAR_COLOR, isGreaterThanOrEqualTo or arrayContains or arrayContainsAny, etc) 但它不起作用。我没有得到任何结果。有任何想法吗?谢谢!
解决方案
根据评论讨论,听起来您希望能够包含whereField
在查询链中,但如果某些条件为真/假,则不实际执行它。
我建议添加一个扩展名Query
:
extension Query {
func whereField(useCondition: Bool, _ field: String, arrayContains: String) -> Query {
if useCondition {
return self.whereField(field, arrayContains: arrayContains)
} else {
return self
}
}
}
然后,您可以执行以下操作:
db.collection("car").whereField(useCondition: !allColors, "carColor", arrayContains: searchedColor)
请注意,您可能需要调整它以适应whereField
您需要的多样性。
推荐阅读
- android-studio - Android Studio 在任何新窗口打开时都超慢、滞后和崩溃 - Mac,需要帮助调试
- javascript - onbeforeunload 在 codeigniter 中不起作用
- javascript - 根据该数字的旧值更新字符串中的某个数字
- c++ - 从 qmake 转换为 cmake,我如何以相同的方式找到库?
- c++ - 在这种情况下哪个更有效:通过引用返回成员,还是作为指针返回?
- ruby-on-rails - 嵌套的 SCSS 样式在生产中不起作用
- python - TypeError: super(type, obj): obj 必须是类型的实例或子类型,仅当我的元类被导入时
- python - 为什么我只将第一个输入导出到 .txt 文件而不是所有输入?
- ios - testDeviceIdentifiers 的 AdMob kGADSimulatorID 编译错误
- python - 为什么 Tkinter 在任何导入后停止工作?