私のデータは非正規化されており、firebaseチームが提案したような逆索引を使用しています。次のようなもの:Firebaseデータベース - 複数のエントリを取得する
{
"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
}
},
...
}
}
今、私はすべてのAdaのグループをロードします。自分のユーザーオブジェクトの一部であるため、自分が所属するグループIDのリストを簡単に取得できます。
Adaのすべての特定のグループを一度にIDで照会する方法はありますか?または、グループIDごとにValueEventListener
を作成し、それぞれのグループを個別にリクエストする必要がありますか?
セキュリティ面では、すべてのグループがそのメンバーだけが読み取り可能であると仮定して、すべてのグループを照会して事実の後でソートすることはできません。
ほとんどのアプリケーションを、個別に各グループをロードします。 Firebaseはデータベースリクエストをパイプライン化するので、これは大きなパフォーマンス低下ではありません。 http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786 –
@FrankvanPuffelen Doあなたがリストをループし、それぞれのための 'ValueEventListener'をセットすると、DBはそれ自身でデータを取得する方法を最適化するでしょうか?または、ある方法でデータを要求する必要がありますか? –
すべての要求は同じ接続を経由します。 'get(1)'、 'get(2)'、 'get(3)'、 'getAll([1,2,3]) 'の唯一の違いはフレームのオーバーヘッドです。 –