Moje dane są denormalizowane i używają odwrotnego indeksu, jak sugeruje zespół ds. Firebase. Coś podobnego do:Baza danych Firebase - pobieranie wielu wpisów
{
"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
}
},
...
}
}
Teraz chcę załadować wszystkie grupy Ada. Mogę łatwo uzyskać listę identyfikatorów grup, do których należy, ponieważ jest ona częścią jej obiektu użytkownika.
Czy istnieje sposób, aby za jednym razem przesłać zapytanie o wszystkie grupy według Ada? Czy muszę utworzyć identyfikator ValueEventListener
dla każdej grupy i zażądać każdej grupy osobno?
Po stronie bezpieczeństwa - załóżmy, że każda grupa jest czytelna tylko dla jej członków, więc nie mogę wysyłać zapytań do wszystkich grup i sortować ich po fakcie.
większości aplikacji za pośrednictwem kluczy z indeksem i załadować każdą grupę indywidualnie. To nie jest duża wydajność, ponieważ Firebase potokuje żądania bazy danych. Zobacz http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786 –
@FrankvanPuffelen Do masz na myśli, że jeśli przejdę przez listę i ustawię wartość "ValueEventListener" dla każdego z nich, DB zoptymalizuje sposób, w jaki pobiera dane samodzielnie? Czy muszę prosić o dane w określony sposób? –
Wszystkie żądania przechodzą przez to samo połączenie. Jedyną różnicą między 'get (1)', 'get (2)', 'get (3)' i 'getAll ([1,2,3])' jest trochę narzutów dla ramek. –