divyanshu bhargava
divyanshu bhargava

Reputation: 1585

Firebase data deleted when you delete different data with same key?

When I delete the first node "List" in Firebase, the second node "List 2" is automatically deleted. I think this is happening due to same key of child of both nodes. Is there any way to stop another node from being deleting? My Firebase Database

Here's my code which I'm using to copy data from "List" to "List 2" and then delete the node "List". When I delete the one node the other also get deletd.

ref.child("List").child(cardTitle).addValueEventListener(new ValueEventListener() {
                                                                @Override
                                                                public void onDataChange(DataSnapshot dataSnapshot) {


                                                                    ref.child("SHOP_ITEM").child("List 2).setValue(dataSnapshot.getValue());
                                                                    ref.child("SHOP_ITEM").child("List").removeValue();

                                                                }

                                                                @Override
                                                                public void onCancelled(DatabaseError databaseError) {

                                                                }
                                                            });

Upvotes: 0

Views: 1019

Answers (1)

Rafael Marques
Rafael Marques

Reputation: 241

I had the same problem, so I used a work around; I simply added a cancel value to it. Something like cancel:"true".

In your case DATABASEREF1 = List1 and DATABASEREF2 = List2..

This was what worked for me. Here is the code:

DATABASEREF1.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        HashMap<String,String> hMdataSnapshot = (HashMap<String, String>) dataSnapshot.getValue();
        hMdataSnapshot.put("canceled","true");

        DATABASEREF2.setValue(hMdataSnapshot).addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {

                DATABASEREF1.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            //DO SOMETHING
                        } else {
                           //DO SOMETHING 
                        }
                    }
                });

            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
               //DO SOMETHING
            }
        });

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});

Upvotes: 0

Related Questions