2017-01-02 256 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

那做的伎倆 - 謝謝! –