我正在尝试使用以下方法查询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
的任何内容。
答案 0 :(得分:10)
不幸的是,双参数queryEqualToValue:childKey:
(及其兄弟queryStartingAtValue:childKey:
和queryEndingAtValue:childKey:
)是Firebase数据库API中一些最容易被误解的方法。
要由孩子订购然后过滤该孩子的值,您必须致电queryOrderedByChild().queryEqualToValue()
。所以@ ElCaptainV2.0说:
databaseReference.child("Schools")
.queryOrderedByChild("schoolNameLC")
.queryEqualToValue("test school 1")
如果也想要从具有相同匹配childKey:
值的所有节点中的特定键开始,则只应使用test school 1
参数。当您尝试分页/无限滚动结果时,此重载非常有用。