2017-01-02 147 views
3

我试图使用来查询我的火力地堡数据库中的数据:火力地堡queryEqualToValue与childKey

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的值为testUID1的父密钥下的值为testSchool1。我想要做的就是搜索我的数据库中的Schools,并返回schoolNameLC的值test school 1

+2

尝试'databaseReference.child( “学校”)。queryOrderedByChild( “schoolNameLC”)。queryEqualToValue(试验学​​校1).observe(.value的){(SNAP)在 打印(snap.value) }' –

回答

7

双参数queryEqualToValue:childKey:(及其同类queryStartingAtValue:childKey:queryEndingAtValue:childKey:)不幸是Firebase数据库API中最被误解的一些方法。

要为小孩订购,然后过滤该小孩的价值,您必须致电queryOrderedByChild().queryEqualToValue()。因此,作为@ ElCaptainV2.0说:

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

你只应该使用childKey:参数,如果你希望在具有相同匹配test school 1值的所有节点的特定键启动。当您尝试分页/无限滚动结果时,此重载确实非常有用。

+0

那做的伎俩 - 谢谢! –