auch dies ist nicht die genaue Antwort kann man erwarten, aber es HELOs wenn Ihre App skaliert
Ich empfehle Ihnen, verwenden Sie ein Fan Datenstruktur aus.
Damit erstellen Sie einen separaten Knoten user-posts
, wo Sie alle speichern die Beiträge von einzelnen Benutzern wie unten:
user-posts
-YiXgM3qgqcsd //this us A's UID
KlgYXK01ezPjket4ery62
post: "This is a Test Post by user A"
date: 1496428200000
author:'A'
KlgYXK01ezPjket4ery62
post: "This is a 2nd Test Post by user A"
date: 1496428500000
author:'A'
KlgYXK01ezPjket4ery62
post: "This is a 3rd Test Post by user A"
date: 1496428600000
author:'A'
-YiXCWsdj712 //this us B's UID
KlgYXK01ezPjket4ery62
post: "This is a Test Post by user B"
date: 1496428200000
author:'B'
Jetzt können Sie für A Beiträge lik Abfrage:
mDatabase = FirebaseDatabase.getInstance().getReference("user-posts");
String UID = "userA";
Query myTopPostsQuery = mDatabase.child(UID).limitToLast(10);
Da Daten schieben in einen Knoten erstellt einen eindeutigen Schlüssel, die standardmäßig in chronologischer Reihenfolge sind Sie müssen sich keine Sorgen über die Sortierung nach Zeitleiste, wie Sie limitToLast()
verwenden, die Sie Beiträge von unten gibt, dh letzte
So ist es besser, Sie drücken Daten auf verschiedene Knoten posts
und user-posts
, wenn ein Benutzer einen Beitrag erstellt. Das ist besser als das Schreiben von Daten ist billig in Feuerbasis im Vergleich zum Lesen von Daten
Jetzt können Sie nur Daten aus Lit. herausziehen "user-posts/UID"
statt Feuerbasis Quering Daten von posts
all Beiträgen von Benutzern Filterung A dann wieder von Timeline Bestellung die teuer und langsam sein, wenn Sie viele Anzahl der Beiträge
haben wenn es darum geht, Daten auf verschiedene Knoten zu schieben, dh posts
und user-posts
diese billig sein könnte und Sie updateChildren()
Methode wie unten verwenden:
Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
// Generate a new push ID for the new post
Firebase newPostRef = ref.child("posts").push();
String newPostKey = newPostRef.getKey();
// Create the data we want to update
Map newPost = new HashMap();
newPost.put("title", "New Post");
newPost.put("content", "Here is my new post!");
Map updatedUserData = new HashMap();
updatedUserData.put("user-posts/" + newPostKey, true);
updatedUserData.put("posts/" + newPostKey, newPost);
// Do a deep-path update
ref.updateChildren(updatedUserData, new Firebase.CompletionListener() {
@Override
public void onComplete(FirebaseError firebaseError, Firebase firebase) {
if (firebaseError != null) {
System.out.println("Error updating data: " + firebaseError.getMessage());
}
}
});
Sie könnten auf die Firebase Blogpost here
verweisen