我剛剛開始使用Firebase數據庫,並且遇到了一些麻煩,這些麻煩纏繞着我高效地查詢數據。我現在的數據庫結構類似於火力地堡文檔建議的數據結構,我們看到這個例子:查詢用於多個密鑰的Firebase數據庫
// An index to track Ada's memberships
{
"users": {
"alovelace": {
"name": "Ada Lovelace",
// Index Ada's groups in her profile
"groups": {
// the value here doesn't matter, just that the key exists
"techpioneers": true,
"womentechmakers": true
}
},
...
},
"groups": {
"techpioneers": {
"name": "Historical Tech Pioneers",
"members": {
"alovelace": true,
"ghopper": true,
"eclarke": true
}
},
...
}
}
我遇到的問題是,我不知道如何有效地檢索所有的組名爲特定用戶。我可以檢索所有的組ID爲易於用戶:
usersRef.child("alovelace").child("groups").observeSingleEvent(of: .value, with: { (snapshot) in
// code to store group IDs
})
但現在我能想到把所有的組名的唯一方法是通過ID,以使一個for循環,然後進行.observeSingleEvent電話爲每個人獲取名稱。但是如果我有一組非常龐大的用戶羣呢?理想情況下,我不希望進行如此多的數據庫調用,只需要在一個調用中完成。這種數據結構可能嗎?
Firebase將通過單個打開的連接檢索項目,因此連接的開銷很小。以這種方式(也稱爲客戶端連接)檢索合理數量的項目並不像您想象的那麼慢,因爲請求是通過現有連接進行流水線處理的。見http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786 –