Angenommen, ich habe eine App mit Benutzern, die Haustiere besitzen.Wie Sie Beziehungen in Firebase in Android-Apps abfragen
Von dem, was ich in verschiedenen Quellen zu lesen, ist dies eine gültige Weise Beziehungen in Firebase DB zu modellieren:
{
"users":{
"user1":{
"name":"Arthur",
"pets":{
"pet1":true,
"pet2":true
}
},
"user2":{
"name":"George",
"pets":{
"pet3":true,
"pet4":true
}
}
},
"pets":{
"pet1":{...},
"pet2":{...},
"pet3":{...},
"pet4":{...}
}
}
Sagen, ich habe einen Android-App, und ich möchte eine Liste aller Nutzer präsentieren und in jedem Listenelement auch angeben, welche Haustiere der Benutzer besitzt.
Was ich will ist eine Liste von Benutzerobjekten, wo jedes Benutzerobjekt eine Liste von Pet-Objekten hat. Zum Beispiel:
public class User {
public String name;
public List<Pet> pets;
...
}
Was ist der beste Weg, die DB abzufragen, um dieses Ergebnis zu erhalten?
Was ist das Problem/Anliegen:
Feuerbasis Objekte in Ihrer POJO Zur Karte, ich habe FirebaseUI
Und meine ViewHolder Klasse verwendet? Weil es scheint eine Kombination von [Laden von Benutzern aus einer Liste] (https://firebase.google.com/docs/database/android/lists-of-data#child-events) und dann [bei den Haustieren] (http : //stackoverflow.com/q/31670234) (oder [eine davon] (http://stackoverflow.com/search?q=%5Bfirebase%5D%5Bandroid%5D+join)). Wenn Sie sich Sorgen um die Join-Leistung machen, lesen Sie [meine Antwort hier] (http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using) -Abfrage-statt-obse/35932786 # 35932786). –
Danke @FrankvanPuffelen, meine Sorge ist das: Was ich will, ist eine Liste von Benutzerobjekten (wie in der Frage gezeigt). Sagen Sie zum Beispiel, ich habe 100 Benutzer, bedeutet es, dass ich eine Abfrage für die Benutzer durchführen muss, und dann Schleife und für jeden Benutzer eine weitere Abfrage (100 Abfragen)? Und dann muss ich die Haustierliste jedes Benutzers selbst festlegen ... Das scheint einfach komplex und unbequem zu sein. – dors
Wenn Sie 100 Benutzer anzeigen und eine indizierte Datenstruktur verwenden möchten, müssen Sie 100 Elemente abrufen. Es ist eine clientseitige Join-Operation, die tatsächlich zu mehr clientseitigen Code führt. Aber es ist nicht so langsam, wie Sie vielleicht denken, wie im letzten Link in meinem ersten Kommentar erklärt. –