带有childKey的Firebase queryEqualToValue
我正在尝试使用以下方式在我的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
进行search,并返回任何带有schoolNameLC
值的test school 1
。
不幸的是,Firebase数据库API中的两个参数queryEqualToValue:childKey:
及其queryStartingAtValue:childKey:
和queryEndingAtValue:childKey:
是最被误解的一些方法。
要按小孩sorting,然后过滤该小孩的值,必须调用queryOrderedByChild().queryEqualToValue()
。 正如@ ElCaptainV2.0所说:
databaseReference.child("Schools") .queryOrderedByChild("schoolNameLC") .queryEqualToValue("test school 1")
如果您还想从具有相同匹配test school 1
值的所有节点中的特定键开始,则只应使用childKey:
参数。 当你尝试分页/无限滚动结果时,这个重载真的非常有用。