J'ai déjà suivi ceci . Mais malheureusement, lorsque je supprime une donnée avec la même valeur, elle est également supprimée. Je veux supprimer une seule donnée.
Voici la structure de ma base de données. .
Je veux ne supprimer qu'une seule valeur.
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) {
}
});
J'ai ce code
Y a-t-il une chance que vous ayez une idée? Je pense que la meilleure façon de le faire est d'obtenir l'ID du patient et de supprimer ces données, car l'ID est unique. Toute aide appréciée!
récupérez d'abord cette valeur, puis supprimez-la.! et si vous ne connaissez pas la clé de cet objet, il vous suffit d'interroger cette clé puis d'obtenir cette clé d'objet De DataSnapshot
à l'aide de getKey() method
comme postsnapshot.getKey()
ou consultez mon Tutoriel Firebase Helper Class
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();
}
Votre requête de filtre est incorrecte ... Et pour supprimer Patients/nodeid/patient_id/address défini sur null
Vous pouvez supprimer Dummy1 en utilisant le code suivant:
FirebaseDatabase.getInstance().getReference("dentist-ass-key")
.child("Patients")
.child("91C...key")
.child("-KwYUqs...key")
.child("firstname")
.removeValue();
J'ai donné l'exemple pour montrer comment vous devez couper un arbre pour supprimer un nœud "Dummy1" nom d'utilisateur
Si vous ne connaissez pas la clé des éléments à supprimer, vous devez d'abord interroger la base de données pour déterminer ces clés:
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());
}
});