Ich brauche ein paar Tipps, wie Sie meine Datenbank strukturieren, um sie korrekt abzufragen. Von dem, was ich verstanden habe, ist die Struktur der Datenbank alles, aber ich bin mir nicht sicher, ob ich es richtig benutze.Firebase Datenbankstruktur Beratung
Grundsätzlich soll meine App Daten von einem API abrufen und das in einer Listview anzeigen. Jeder Artikel (Nachrichtenpost) in der Listenansicht kann Kommentare von Firebase-Benutzern enthalten.
So habe ich "NewsPost", "Benutzer" und "Kommentar" Modelle, die so aussieht.
NewsPost.class
private String id;
private String date;
private String title;
private String commentsNumber;
private List<Comment> comments;
private String imageUrl;
User.class
private String userName;
private String userAvatar;
private String firstName;
private String lastName;
private String eMail;
Comment.class
private UUID uuid;
private String postId;
private String message;
private String postDate;
private String userAvatar;
private String userName;
So ist dies, wie ich versuchte, es zu speichern:
und das ist, wie ich versuche, die Kommentare zu erhalten, wenn ein Benutzer die Kommentare für die spezifische newsPostItem in der lesen klickt listView mit der newsPostId als Abfrageparameter.
public void getComments(String postId) {
comments = new ArrayList<>();
Query query = databaseReference.child("comments").orderByChild(postId).equalTo(postId);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot issue : dataSnapshot.getChildren()) {
Comment comment = issue.getValue(Comment.class);
comments.add(comment);
}
Log.d("GETCOMMENTS", "SNAPSHOT EXISTS");
view.onCommentsLoaded(comments);
}
else{
view.onCommentsLoaded(comments);
Log.d("GETCOMMENTS", "SNAPSHOT NOT EXISTS");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
view.onCommentsLoaded(comments);
Log.d("GETCOMMENTS", databaseError.getMessage());
}
});
}
Meine Frage ist, Amidoinitrit?
Ich habe eine Feuerbasis Grenze für diesen Monat Warnung heruntergeladen (10 GB), die ich den einzigen Benutzer bin sollten nicht passieren, weil gerade jetzt.
Jede Hilfe wird geschätzt!
Hinweis: Der userAvatar ist in einem Byte [] in der Datenbank gespeichert, nicht gut?
Haben Sie es geschafft, die gewünschten Daten zu bekommen? –
@AlexMamo Ja und Nein. Wenn ich eine Abfrage verwende, existiert der Snapshot nicht. Wenn ich dbref verwende, dann bekomme ich die Kommentare, aber es beschwert sich über große Anfragen von der Firebase db. Etwas ist offensichtlich schlecht strukturiert, da ich fast 10 GB Download innerhalb eines Monats für EINEN Benutzer benutzt habe ... – JoSem