Rafael Said
Rafael Said

Reputation: 19

I want to delete the Firebase database child, but I can't

I want to delete the Firebase database child with this follow code when I click the first item in a list in an app, but I can't. What's wrong?

Query removeCalendar = mCalendarDatabaseReference.limitToFirst(1);
removeCalendar.addListenerForSingleValueEvent(new ValueEventListener() {

   @Override
   public void onDataChange(DataSnapshot dataSnapshot) {
       String remCal = dataSnapshot.toString();
       mCalendarioDatabaseReference.child(remCal).removeValue();
       }

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

Upvotes: 1

Views: 134

Answers (3)

Cătălin Florescu
Cătălin Florescu

Reputation: 5158

You can do mCalendarioDatabaseReference.child(remCal).setValue(null);

Upvotes: 0

Rafael Said
Rafael Said

Reputation: 19

I solve the problem with this code:

Query removerCalendario = mCalendarioDatabaseReference.limitToFirst(1);
removerCalendario.addListenerForSingleValueEvent(new ValueEventListener() {

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot ds : dataSnapshot.getChildren()) {
        ds.getRef().removeValue();

    }
}

Upvotes: 0

Levi Moreira
Levi Moreira

Reputation: 12005

Firebase Queries return a list of possible locations where the query might be satisfied, you'd need to iterate through your dataSnapshot to access those locations. Moreover, this :

String remCal = dataSnapshot.toString();

is not going to print the String value of this snapshot. If you want to get the string value of a dataSnapshot it should be:

String remCal = dataSnapshot.getValue(String.class);

If you want to get the reference of a datasnapshot just use getRef(), you don't have to access the original reference.

Query removeCalendar = mCalendarDatabaseReference.limitToFirst(1);
removeCalendar.addListenerForSingleValueEvent(new ValueEventListener() {

   @Override
   public void onDataChange(DataSnapshot dataSnapshot) {
       for (DataSnapshot child: dataSnapshot.getChildren()) {
            child.getRef().setValue(null); //deleting the value at this location. You can also use removeValue()
        }
       }

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

Upvotes: 1

Related Questions