Reputation: 677
Just a little question :
Now i have this structure
images
---- uniqueId
-------- id_logement : 1747657
-------- image : dataimage
---- uniqueId
-------- id_logement : 1747657
-------- image : dataimage
---- uniqueId
-------- id_logement : 985445234
-------- image : dataimage
And it's better ! Thank you !! but :
How can i remove all the images where id_logement = 1747657 ?
i tried that
firebase.database().ref('logements/'+key).remove();
firebase.database().ref('geofire/'+key).remove();
firebase.database().ref('images').child('id_logement').equalTo(key).remove();
with key = 1747657 but without success for the images ! This UniqueId makes me nervous ! Please can you send me more advices ? thank you very much
Upvotes: 3
Views: 13116
Reputation: 9389
Since you want to bulk delete data based on a query, you will need to retrieve it first and delete it setting its values to null and committing the changes with update
.
const ref = firebase.database().ref('images');
ref.orderByChild('id_logement').equalTo(key).once('value', snapshot => {
const updates = {};
snapshot.forEach(child => updates[child.key] = null);
ref.update(updates);
});
Working jsFiddle.
Upvotes: 10
Reputation: 14364
There is actually an easier way.
Just call the ref
property in your snapshot, and use .on('child_added',...)
var ref = firebase.database().ref('images');
ref.orderByChild('id_logement').equalTo(key).on('child_added', (snapshot) => {
snapshot.ref.remove()
});
Upvotes: 5
Reputation: 3850
Try this code:-
rootRef.child("images").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for(DataSnapshot dataSnapshot : snapshot.getChildren())
{
if(dataSnapshot.child("id_logement").getValue().toString().equals("1747657"))
{
dataSnapshot.getRef().setValue(null);
}
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
Upvotes: 1