I miei dati vengono denormalizzati e utilizzano un indice inverso come suggerito dal team di Firebase. Qualcosa di simile a:Database Firebase: recupero di più voci
{
"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
}
},
...
}
}
Ora voglio caricare tutti i gruppi di Ada. Posso facilmente ottenere un elenco degli ID di gruppo a cui appartiene dato che fa parte del suo oggetto utente.
Esiste un modo per interrogare tutti i gruppi specifici di Ada per ID contemporaneamente? O devo creare un numero ValueEventListener
per ID di gruppo e richiedere ogni gruppo separatamente?
Per quanto riguarda la sicurezza, supponiamo che ogni gruppo sia leggibile solo dai suoi membri, quindi non posso interrogare tutti i gruppi e ordinarli dopo il fatto.
La maggior parte delle applicazioni attraverso le chiavi dal indice e caricare ciascun gruppo. Non si tratta di un grande drenaggio delle prestazioni, poiché Firebase esegue la pipeline delle richieste del database. Vedi http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786 –
@FrankvanPuffelen Do vuoi dire che se faccio un ciclo attraverso l'elenco e imposto un 'ValueEventListener' per ognuno di essi, il DB ottimizzerà il modo in cui recupera i dati da solo? O devo richiedere i dati in un certo modo? –
Tutte le richieste passano attraverso la stessa connessione. L'unica differenza tra 'get (1)', 'get (2)', 'get (3)' e 'getAll ([1,2,3])' è un overhead per i frame. –