首页 > 解决方案 > Firebase - 查询具有特定和非特定值的对象的属性

问题描述

我正在对一个结构如下的小型数据库运行基本查询:

假设前 2 个字段具有特定信息:

但是对于第三个字段,我可以查询具有特定颜色的所有值:红色、蓝色等。我的问题是如何使用以下方法查询第三个字段:

如果“所有颜色”不是特定值?我使用过: .whereField(CAR_COLOR, isGreaterThanOrEqualTo or arrayContains or arrayContainsAny, etc) 但它不起作用。我没有得到任何结果。有任何想法吗?谢谢!

标签: swiftgoogle-cloud-firestore

解决方案


根据评论讨论,听起来您希望能够包含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您需要的多样性。


推荐阅读