我正在尝试使用以下方法查询Firebase数据库中的数据:

queryEqual(toValue: Any?, childKey: String?)

我的数据库结构:
Schools {
    testUID1 {
        schoolNameLC: test school 1
    }
}

我的查询是:
databaseReference.child("Schools").queryEqual(toValue: "test school 1", childKey: "schoolNameLC").observe(.value) { (snap) in
        print(snap)
    }

此查询打印出null,我不太明白它的工作。由于我的应用程序的设置方式,我不知道键schoolNameLCtestSchool1的父键下有一个值testUID1。我要做的就是在数据库中搜索Schools并返回schoolNameLC值为test school 1的任何内容。

最佳答案

不幸的是,两个参数queryEqualToValue:childKey:(及其兄弟queryStartingAtValue:childKey:queryEndingAtValue:childKey:)是Firebase Database API中一些最容易被误解的方法。

要按 child 排序,然后根据该 child 的值进行过滤,您必须调用queryOrderedByChild().queryEqualToValue()。因此,如@ ElCaptainV2.0所说:

databaseReference.child("Schools")
    .queryOrderedByChild("scho‌​olNameLC")
    .queryEqua‌​lToValue("test school 1")

仅当希望从所有具有相同的childKey:值的节点中的特定键开始时,才应使用test school 1参数。当您尝试分页/无休止地滚动结果时,此重载实际上非常有用。

关于ios - 带有childKey的Firebase queryEqualToValue,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41421387/

10-11 15:08