2017-10-16 3 views
0

Ich folgte bereits this. Aber wenn ich eine Daten mit dem gleichen Wert wie die andere lösche, wird es leider auch gelöscht. Ich möchte nur einzelne Daten löschen.Entfernen Sie einen bestimmten Wert von Firebase Datenbank

Hier ist meine Datenbankstruktur. Here is my database.

Ich möchte nur nur einen einzigen Wert löschen.

Query query = databaseReference.orderByChild("address").equalTo(tvPatientAddress.getText().toString()); 

         query.addChildEventListener(new ChildEventListener() { 
          @Override 
          public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
           dataSnapshot.getRef().setValue(null); 
          } 

          @Override 
          public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

          } 

          @Override 
          public void onChildRemoved(DataSnapshot dataSnapshot) { 

          } 

          @Override 
          public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

          } 

          @Override 
          public void onCancelled(DatabaseError databaseError) { 

          } 
         }); 

Ich habe diesen Code

Jede Chance, euch eine Idee? Ich denke, der beste Weg dazu ist, die ID des Patienten zu erhalten und diese Daten zu löschen, da die ID eindeutig ist. Jede Hilfe wird geschätzt!

+0

Sie können ein Beispiel geben, welchen Knoten Sie in einem gegebenen Bild löschen möchten? –

+0

Zum Beispiel möchte ich löschen, Dummy1 @BurhanuddinRashid –

Antwort

6

diesen Wert erhalten und dann entfernen.! und wenn Sie nicht wissen, über den Schlüssel des Objekts alles, was Sie tun müssen, um die Anfrage und erhalten dann die Objektschlüssel Von DataSnapshot mein Firebase Helper Class Tutorial

mdatabaseReference.child("users").orderByKey().equalTo(uid).addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 

    for (DataSnapshot postsnapshot :dataSnapshot.getChildren()) { 

    String key = postsnapshot.getKey(); 
    dataSnapshot.getRef().removeValue(); 

} 
+0

Wie bekomme ich die UID? –

+0

private Zeichenfolge uId = FirebaseAuth.getInstance(). GetCurrentUser(); –

+0

String key = postsnapshot.getKey(); benutze dies und erhalte Schlüssel des Objekts @KyleAnthonyDizon –

0

Sie können Dummy1 durch folgenden Code entfernen:

FirebaseDatabase.getInstance().getReference("dentist-ass-key") 
.child("Patients") 
.child("91C...key") 
.child("-KwYUqs...key") 
.child("firstname") 
.removeValue(); 

ich das Beispiel gegeben haben, zu zeigen, wie man einen Baum tranverse benötigen einen Knoten „Dummy1“ username

Wenn Sie don‘löschen t kennen den Schlüssel der Elemente zu entfernen, müssen Sie zuerst die Datenbank abfragen müssen, um diese Schlüssel zu bestimmen:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("dentist-ass-key"); 
Query dummyQuery = ref 
    .child("Patients") 
    .child("91C...key") 
    .orderByChild("firstname") 
    .equalTo("Dummy1"); 

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

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

Wie bekomme ich diesen Schlüssel? .child ("- KwYUqs ... key") –

+0

Überprüfen Sie meine aktualisierte Antwort –

+0

Aber ich habe 2 Daten mit dem gleichen "Vornamen" von "Dummy1", sie werden beide gelöscht? –

0

mit getKey() method wie postsnapshot.getKey()

oder überprüfen Sie Ihre Filterabfrage ist falsch ... und löschen Patienten/nodeid/patient_id/adresse auf null gesetzt

Verwandte Themen