一尘不染

带有childKey的Firebase queryEqualToValue

swift

我正在尝试使用以下方法查询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,我不能完全正常工作。由于我的应用设置方式不同,因此我不知道该键的父键下schoolNameLC有一个值。我要做的就是在数据库中搜索,然后返回任何值为的内容。testSchool1``testUID1``Schools``schoolNameLC``test school 1


阅读 244

收藏
2020-07-07

共1个答案

一尘不染

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

要按孩子排序,然后过滤该孩子的值,您必须致电queryOrderedByChild().queryEqualToValue()。因此,如@
ElCaptainV2.0所说:

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

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

2020-07-07