2016-05-23 15 views
16

Ich benutze Firebase Echtzeit-Datenbank in Android App und haben Daten wie folgt aus: enter image description hereSo löschen Sie aus der Firebase-Echtzeitdatenbank?

Wie kann ich den Rekord „Apple“ (markiert im Bild) löschen?

Gemäß den Dokumenten, um einen Artikel zu entfernen, rufen Sie removeValue() auf der Referenz. Aber um die Referenz zu bekommen, benötige ich das Kind id. Weil es eine zufällig generierte ID ist (-KISNx87aYigsH3ILp0D), wie man es löscht?

+0

danke an beide für die Frage und die Antwort #Amit & @Frank van Puffelen –

Antwort

33

Wenn Sie den Schlüssel der Elemente nicht wissen, zu entfernen, müssen Sie zunächst auf die Datenbank abfragen, diese Schlüssel zu bestimmen:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 
Query applesQuery = ref.child("firebase-test").orderByChild("title").equalTo("Apple"); 

applesQuery.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot appleSnapshot: dataSnapshot.getChildren()) { 
      appleSnapshot.getRef().removeValue(); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Log.e(TAG, "onCancelled", databaseError.toException()); 
    } 
}); 
+1

Vielen Dank. Genau das habe ich gesucht. –

+0

Warum kann ich 'DatabaseReference' nicht finden? –

+0

Was ist, wenn mehrere Knoten mit dem Titel "Apple" vorhanden sind? –

1

Je nachdem, wie und warum Sie die Daten löschen können Sie diese verwenden:

// Could store the push key or get it after push 
String newPostKey = yourDatabase.child('firebase-test').push({ 
    something:something 
}).key(); 

// Depends how you get to here 
howYouGotHereId.parent().setValue(null); 

Firebase Save Data 3.0

-1

Sorry für Putten auf dem Antwortabschnitt, aber ich habe eine ähnliche Frage, was passiert, wenn zum Beispiel [-KISNx87aYigsH3ILp0D], i s der Knoten der Datenbank und nicht ein Kind von Firebase-Test und ich möchte löschen, für jetzt "Apple", wie kann ich das tun. Da ich den Kindknotennamen coz nicht kenne, wird er dynamisch erstellt, aber ich möchte einen bestimmten Eintrag aus der Datenbank löschen.

+0

Dies liefert keine Antwort auf die Frage. Sie können [ähnliche Fragen suchen] (// stackoverflow.com/search) oder auf die verwandten und verknüpften Fragen auf der rechten Seite der Seite verweisen, um eine Antwort zu finden. Wenn Sie eine verwandte, aber andere Frage haben, [stellen Sie eine neue Frage] (// stackoverflow.com/questions/ask), und fügen Sie einen Link zu diesem ein, um den Kontext zu verdeutlichen. Siehe: [Fragen stellen, Antworten erhalten, keine Ablenkungen] (// stackoverflow.com/tour) – FelixSFD

Verwandte Themen