web-dev-qa-db-fra.com

Supprimer une valeur spécifique de la base de données Firebase

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.  Here is my database .

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!

5
Kyle Anthony Dizon

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();

 }
14
Atif AbbAsi

Votre requête de filtre est incorrecte ... Et pour supprimer Patients/nodeid/patient_id/address défini sur null

0
Shanmugam

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());
    }
});
0
Burhanuddin Rashid