我正在尝试使用以下方法查询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
的任何内容。 最佳答案
不幸的是,两个参数queryEqualToValue:childKey:
(及其兄弟queryStartingAtValue:childKey:
和queryEndingAtValue:childKey:
)是Firebase Database API中一些最容易被误解的方法。
要按 child 排序,然后根据该 child 的值进行过滤,您必须调用queryOrderedByChild().queryEqualToValue()
。因此,如@ ElCaptainV2.0所说:
databaseReference.child("Schools")
.queryOrderedByChild("schoolNameLC")
.queryEqualToValue("test school 1")
仅当且希望从所有具有相同的
childKey:
值的节点中的特定键开始时,才应使用test school 1
参数。当您尝试分页/无休止地滚动结果时,此重载实际上非常有用。关于ios - 带有childKey的Firebase queryEqualToValue,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41421387/