2017-01-12 39 views
1

如何在Firebase數據庫中進行查詢以獲取控制檯中的某些子項?例如,從下面的快照中,我怎樣才能查詢得到Image,其中Des: 11如何使Firebase數據庫查詢獲得一些使用Swift 3的孩子?

This is a snapshot for my console in firebase database

我使用這個代碼:

func loadData(){ 


    Ref=FIRDatabase.database().reference().child("Posts") 

    Handle = Ref?.queryOrdered(byChild: "11").observe(.childAdded ,with: { (snapshot) in 

     if let post = snapshot.value as? [String : AnyObject] { 

      let img = Posts() 

      img.setValuesForKeys(post) 

      self.myarray.append(img) 

       self.tableView.reloadData() 

     } 

    }) 

} 
+0

'ref?.queryOrdered(byChild:「Des」)。queryEqual(toValue:「11」 AnyObject] { // .... } })' –

+0

感謝您的幫助,但是這個錯誤出現在調試中(使用未指定的索引,請考慮在/ posts到您的安全規則中添加「.indexOn」:「Des」爲更好的性能) –

+0

這是不是一個錯誤..它建議你改變你的規則更好的性能..但仍然你的項目與此警告 –

回答

2

厄爾尼諾Capitain說,你需要使用:也

func loadData(){ 

    let ref = FIRDatabase.database().reference().child("Posts") 

    ref?.queryOrdered(byChild: "Des").queryEqual(toValue: "11").observe(.childAdded, with: { snapshot in 
     if let post = snapshot.value as? [String : AnyObject] { 
      // do stuff with 'post' here. 

     } 
    }) 

} 

,正如他所說,你您需要設置您的安全規則,以允許您通過'Des'或您要查詢的任何其他子節點進行搜索。此外,你需要設置規則,允許你讀訪問查詢地點:

{ 
    "rules": { 
    ".read": "auth != null", 
    ".write": "auth != null", 

    "Posts": { 
     "$someID": { 
     ".indexOn": ["Des"] 
     } 
    } 
    } 
} 

但是,你不會得到「只圖像」不過,你的查詢將返回整個節點。在這種情況下,上面的查詢將返回rrrrrr節點。如果let post = snapshot.value as?[String:

+0

我這樣做就像你回答,但仍然當我運行我的項目時,它看起來是空的,沒有什麼東西可以顯示。 –

+0

好的。現在它的工作非常感謝你 –

+0

爲我工作,謝謝。我一直在使用這裏面返回所有的數據:: databaseRef.child(「用戶」)queryOrderedByKey()觀察(.childAdded,具有:{快照 但想下載,如果滿足一定的標準和代碼效果很好 – PhilipS

相關問題