2017-05-16 169 views
0

檢索嵌套數據我有一個火力點的結構是這樣火力地堡:來自未知孩子

"broadcast": { 
    "ghjghjFc1S3KO0y8yJwORdfgret": { //user ID 
     "ryrtybgzMiI858YyGua": { //broadcast ID 
       "a": "xxx", // broadcast Detail 
       "b": "yyy", 
       "c": false 
     } 
     "cbvbcvbMvAnSDqTb15vU": { //broadcast ID 
       "a": "xxx", // broadcast Detail 
       "b": "yyy", 
       "c": true 
     } 
    } 
    "3uqWZJRFc1S3KO0y8yJwORTMtWC2": { //user ID 
     "jkhjkbgzMiI858YyGua": { //broadcast ID 
       "a": "xxx", // broadcast Detail 
       "b": "yyy", 
       "c": false 
     } 
     "qwwerqweMvAnSDqTb15vU": { //broadcast ID 
       "a": "xxx", // broadcast Detail 
       "b": "yyy", 
       "c": true 
     } 
    } 
} 

我想檢索具有廣播其中c等於真正的所有節點。我怎樣才能迅速做到這一點?你可以這樣做

+0

對於所有的用戶或單個用戶? –

+0

@NiravD謝謝。我已經試過這個查詢,但我什麼都沒有(snapshot.childrenCount = 0) –

+0

@ user7814783其實我想檢索所有用戶沿他們的廣播,但只有那些'c'等於真的 –

回答

0

的一種方法是通過重組你的數據庫:

"userBroadcasts": { 
    "ghjghjFc1S3KO0y8yJwORdfgret": { // user ID 
     "ryrtybgzMiI858YyGua": true, // broadcastID 
     "jkhjkbgzMiI858YyGua": true, // another broadcastID 
     // etc.. 
    }, 
    // more users down here... 
} 

"broadcast": { 
    "ryrtybgzMiI858YyGua": { // broadcast ID 
     "a": "xxx", // broadcast Detail 
     "b": "yyy", 
     "c": false 
    }, 
    "jkhjkbgzMiI858YyGua": { 
     "a": "xxx", 
     "b": "yyy", 
     "c": true 
    }, 
    // more broadcasts down here... 
} 

然後你就可以通過調用得到所有你想要的廣播:如果您想讓用戶ID以及

FIRDatabase.database().reference().child("broadcast").queryOrdered(byChild: "c").queryEqual(toValue: true) 

,將其存儲在廣播中,例如:

"broadcast": { 
    "ryrtybgzMiI858YyGua": { // broadcast ID 
     "a": "xxx", // broadcast Detail 
     "b": "yyy", 
     "c": false, 
     "userID":"ghjghjFc1S3KO0y8yJwORdfgret" 
    }, 
    "jkhjkbgzMiI858YyGua": { 
     "a": "xxx", 
     "b": "yyy", 
     "c": true, 
     "userID":"ghjghjFc1S3KO0y8yJwORdfgret" 
    }, 
    // more broadcasts down here... 
} 

擁抱反常化與Firebase數據庫!

+0

謝謝布拉德利。這樣我就知道它應該可以工作。如果用戶可以有多個具有相同廣播ID但具有不同廣播詳細信息的記錄,可否請您指導一下數據庫結構? –

+0

@WaqarAli這將需要更復雜的結構。你確定你需要一個用戶有兩個相同ID的廣播嗎?一個ID通常應該唯一標識一個元素。 –

+0

是的,在我的情況下,用戶可以有多個具有相同ID的廣播,但具有不同的詳細信息,例如持續時間觀看者等。 –