2016-08-25 6 views
0

Ich versuche, eine Anwendung zu machen, die Einträge auf Firebase speichert. Jeder Eintrag hat ein Autorenfeld um anzugeben, wer es geschrieben hat. Jedoch wird jeder Beitrag (unabhängig vom Autor) an einen gemeinsamen Elternteil weitergegeben. Gibt es eine Möglichkeit, jeden Eintrag unter diesem Elternteil zu durchlaufen und alle Beiträge eines bestimmten Autors zu finden?Java Firebase Suche nach Child-Wert

+0

Siehe https://firebase.google.com/docs/database/android/retrieve-data#sorting_and_filtering_data. Ziehen Sie aber auch die Denormalisierung Ihrer Daten für eine optimale Skalierbarkeit in Betracht, wie in https://firebase.google.com/docs/database/android/structure-data#fanout erläutert –

Antwort

0

Sie können einen FirebaseQuery verwenden. Im Grunde, anstatt die gesamte Datenbank herunterzuladen und selbst zu filtern, fragen Sie Ihre FirebaseReference auf bestimmte Kinder Wert. Sie können so etwas versuchen, um alle Beiträge desselben Autors zu erhalten.

// Get your reference to the node with all the entries 
DatabaseRefenrec ref = FirebaseDatabase.getInstance().getReference(); 

// Query for all entries with a certain child with value equal to something 
Query allPostFromAuthor = ref.orderByChild("name_of_the_child_node").equalTo("author_name"); 

// Add listener for Firebase response on said query 
allPostFromAuthor.addValueEventListener(new ValueEventListener(){ 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot post : dataSnapshot.getChildren()){ 
      // Iterate through all posts with the same author 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}); 

Für bessere Leistungen, betrachten indexing Sie Datenbank mit Firebase Regeln. Dies macht Firebase Ihre Daten in einer geordneten Weise speichern, so dass Abfragen schneller verwaltet werden.