使用唯一键数组搜索Firebase查询

时间:2017-10-16 00:27:23

标签: ios swift firebase

我的架构设置如下。

GeographicLib

现在我想发送一个字符串chinohills7leavescafe101191514.19284,并想检查Chino Hills中是否有任何字符串。 我很难做任何搜索查询,因为我没有在固定childKey上面存储上面的字符串 我知道架构应该是这样但我不能改变架构。

leaves-cafe
    codes
        Chino Hills
            -Kw0ZtwrPjyNh1_HJrkf
                codeValue: "chinohills7leavescafe101191514.19284"

1 个答案:

答案 0 :(得分:2)

您正在寻找queryOrderedByValue。它的工作方式与queryOrderedByChild相同,并且允许您使用queryEqualToValue来获得所需的结果,因为您无法更改当前架构。

这是一个例子

// warning: untested code - just illustrating queryOrderedByValue

let ref = Database.database().reference().child("leaves-cafe").child("codes").child("Chino Hills")
let queryRef = ref.queryOrderedByValue().queryEqual(toValue: "chinohills7leavescafe101191514.19284")

queryRef.observeSingleEvent(of: .value, with: { (snapshot) in
    if snapshot.exists() {
        print("value does exists")
    } else {
        print("value doesn't exist")
    }
})

您的备选方案是迭代所有节点,并检查该值是否存在,并建议 3stud1ant3 。但请注意,这种方法既有成本又有安全隐患。您可能会下载大量数据,通常您不应该在设备上加载不需要的数据(特别是如果它们是敏感信息,不确定是否是您的情况);它相当于从数据库下载所有密码以检查输入的密码是否与给定用户匹配。