我正在尝试使用以下方法查询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
null
schoolNameLC
testSchool1``testUID1``Schools``schoolNameLC``test school 1
不幸的是,两个参数queryEqualToValue:childKey:(以及它的brethren queryStartingAtValue:childKey:和queryEndingAtValue:childKey:)是Firebase Database API中一些最容易被误解的方法。
queryEqualToValue:childKey:
queryStartingAtValue:childKey:
queryEndingAtValue:childKey:
要按孩子排序,然后过滤该孩子的值,您必须致电queryOrderedByChild().queryEqualToValue()。因此,如@ ElCaptainV2.0所说:
queryOrderedByChild().queryEqualToValue()
databaseReference.child("Schools") .queryOrderedByChild("schoolNameLC") .queryEqualToValue("test school 1")
仅childKey:当您 还 希望从所有具有相同匹配test school 1值的节点中的特定键处开始时,才应使用该参数。当您试图分页/无休止地滚动结果时,此重载实际上非常有用。
childKey:
test school 1