2016-05-23 31 views
16

Sto usando base di dati in tempo reale Firebase in Android, e ho i dati in questo modo: enter image description hereCome eliminare dal database in tempo reale di Firebase?

Come posso eliminare il record "Apple" (indicato in foto)?

In base ai documenti, per rimuovere un articolo si chiama removeValue() sul riferimento. Ma per ottenere il riferimento ho bisogno del bambino id. Perché è un ID generato casualmente (-KISNx87aYigsH3ILp0D), come eliminarlo?

+0

grazie a entrambi per chiedere e rispondere a #Amit e @Frank van Puffelen –

risposta

33

Se non si conosce la chiave degli elementi da rimuovere, è necessario prima interrogare il database per determinare quelle chiavi:

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

Grazie mille. Questo e 'esattamente quello che stavo cercando. –

+0

perché non riesco a trovare 'DatabaseReference'? –

+0

cosa succede se ci sono più nodi con il titolo "Apple"? –

1

A seconda di come e perché si sta cancellando i dati è possibile utilizzare questi:

// 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

Siamo spiacenti per mettere in alla sezione di risposta, ma ho una domanda simile, che cosa succede se, per esempio [-KISNx87aYigsH3ILp0D], i s il nodo del database piuttosto che un figlio di firebase-test e voglio cancellare, per ora "apple", come posso farlo. Poiché non conosco il nome del nodo figlio coz, questo viene creato dinamicamente, ma voglio eliminare alcune voci particolari dal database.

+0

Questo non fornisce una risposta alla domanda. Puoi [cercare domande simili] (// stackoverflow.com/search), o fare riferimento alle domande correlate e collegate sul lato destro della pagina per trovare una risposta. Se hai una domanda correlata ma diversa, [fai una nuova domanda] (// stackoverflow.com/questions/ask) e includi un collegamento a questo per aiutare a fornire il contesto. Vedi: [Fai domande, ottieni risposte, senza distrazioni] (// stackoverflow.com/tour) – FelixSFD

Problemi correlati