2016-07-31 7 views
3

Nur eine kleine Frage:
Jetzt habe ich diese Struktur
So entfernen Sie Werte in Feuerbasis

images 
---- uniqueId 
-------- id_logement : 1747657 
-------- image : dataimage 
---- uniqueId 
-------- id_logement : 1747657 
-------- image : dataimage 
---- uniqueId 
-------- id_logement : 985445234 
-------- image : dataimage 

Und es ist besser! Vielen Dank !! aber:
Wie kann ich alle Bilder entfernen, wo id_logement = 1747657?
Ich habe versucht

 firebase.database().ref('logements/'+key).remove(); 
     firebase.database().ref('geofire/'+key).remove(); 
     firebase.database().ref('images').child('id_logement').equalTo(key).remove(); 

mit key = 1747657, jedoch ohne Erfolg für die Bilder! Diese UniqueId macht mich nervös! Bitte schicken Sie mir weitere Ratschläge? ich danke Ihnen sehr

+0

Hey Pablo verwenden, nur eine Antwort gegeben. Entschuldigung wegen der Verspätung. Grüße. :) – adolfosrs

Antwort

6

Da Sie auf Bulk-Daten basierend auf einer Abfrage löschen möchten, müssen Sie es zuerst abrufen und löschen Sie es seine Werte Einstellung auf null und begehen die ändert sich mit update.

let ref = firebase.database().ref('images'); 
ref.orderByChild('id_logement').equalTo(key).once('value', snapshot => { 
    let updates = {}; 
    snapshot.forEach(child => updates[child.key] = null); 
    ref.update(updates); 
}); 

Arbeiten jsFiddle.

+0

Genau das habe ich gesucht! Jetzt kann ich für jedes auf einmal entfernen (auf null setzen)! Vielen Dank ! –

+0

Was ist, wenn wir einen bestimmten Datenknoten löschen möchten? – BhargavSushant

+0

@BhargavSushant ref ('Knoten'). Remove()? – adolfosrs

1

diesen Code Versuchen: -

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) { 
     } 
    }); 
+1

Gute Antwort. Aber OP suchte nach einer JavaScript-Lösung, die aufgrund fehlender Plattform-Tags leicht zu übersehen war. –

3

Es gibt eigentlich einen einfacheren Weg.

rufen Sie einfach die ref Eigenschaft in Ihren Schnappschuss und .on('child_added',...)

var ref = firebase.database().ref('images'); 
ref.orderByChild('id_logement').equalTo(key).on('child_added', (snapshot) => { 
    snapshot.ref.remove() 
}); 
+0

Guter Fang. Obwohl dies den Code klein erscheinen lässt, würde ich sagen, dass dies nicht die beste Wahl in Bezug auf die Leistung ist und zu nicht erwarteten Verhaltensweisen führen könnte. Dieser Code ruft 'remove' für jeden der untergeordneten Knoten auf, die entfernt werden, während bei der von mir bereitgestellten Lösung 'update' nur einmal aufgerufen wird. Da es sich um einen Beobachter handelt, hören Sie auch auf jedes andere Kind, das hinzugefügt wird, und entfernen die Knoten, die gerade hinzugefügt wurden. – adolfosrs