2016-06-05 1 views
-1

Ich habe eine Struktur Feuerbasis Daten, die wie folgt aussieht:löschen Element in Feuerbasis mit Android

|---employees 
     |----KJSXd4ScEmJ6N4UFc5k 
      |---employeeName:"semah" 
      |---employeeAge:"24" 
     |----KJW3HRh5kxm_FgU9nNV 
      |---employeeName:"Alex" 
      |---employeeAge:"35" 

Jetzt möchte ich den Knoten -KJSXd4ScEmJ6N4UFc5k löschen. Aber ich kenne nur den "employeeName": semah. Ich habe versucht, den Knoten mit löschen:

mFirebaseDatabaseReference 
.child("employees") 
.child("employeeName") 
.child("semah") 
.getParent() 
.setValue(null); 

aber das wird nicht funktionieren, weil „Invalid Firebase Datenbankpfad.‚‘$ Mitglied Firebase Datenbank Pfade nicht enthalten müssen,‚#‘,‚$‘, ‚[‘, oder ‚]‘“

Also meine Frage ist, wie kann ich den Knoten löschen:‚-KJSXd4ScEmJ6N4UFc5k‘nur zu wissen:‚semah‘oder wie Element durch die erzeugte ID entfernen‚-KJSXd4ScEmJ6N4UFc5k‘.

Vielen Dank im Voraus.

+0

Niemand hat eine Antwort auf meine Frage? –

Antwort

2

Da Sie auf den Schlüssel KJSXd4ScEmJ6N4UFc5k haben die Referenz nicht, müssen Sie den Wert abzurufen, und versuchen Sie es mit dem ref Wert abgerufen löschen. So etwas wie das

database.getReference("employees").orderByChild("employeeName").equalTo("semah").addListenerForSingleValueEvent(
       new ValueEventListener() { 
        @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot child: dataSnapshot.getChildren()) { 
       child.getRef().setValue(null); 
      } 
     } 


     @Override 
     public void onCancelled(DatabaseError databaseError) { 
       Log.w("TodoApp", "getUser:onCancelled", databaseError.toException()); 
     } 
}); 
+0

gibt es eine Methode in Firebae für Java, um den Schlüssel "KJSXd4ScEmJ6N4UFc5k" zu bekommen? –

+0

Diese Methode wird diesen Wert erhalten und Sie können 'dataSnapshot.getKey()' in 'onDataChange' verwenden, um den Schlüssel zu erhalten. Mein Code wird den Wert für diese Referenz entfernen, die gleich ist. – Shubhank

+0

Wie kann ich die Methode removeValue() ?? –

0

In Ihrem Fall können Sie eine Abfrage erstellen, um das zu löschende Element abzurufen.
Etwas wie:

Firebase refEmployees = new Firebase("..../employees"); 
Query queryRef = refEmployees.orderByChild("name").equalTo("semah"); 


queryRef..addListenerForSingleValueEvent(
      new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      String key=snapshot.getKey(); 
      //Remove the item 
     } 


     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
}); 
+0

wie ein Kind zu entfernen, wenn hinzugefügt, ich möchte ein Element aus Firebase nicht auf Hinzufügen –

+0

Entfernen Sie einfach die Daten aus der Abfrage mit einem Listener, um das Element zu löschen. –