2016-06-28 17 views
8

Sto costruendo una semplice app di todo utilizzando reactFire, Firebase e reactJS. Il problema che sto incontrando è quando provo a eliminare in blocco le voci completate nell'elenco.Firebase - Eliminazione globale di nodi secondari

componentWillMount: function() { 
     this.ref = Firebase.database().ref("items/"); 
     this.bindAsArray(this.ref, "items"); 
     this.ref.on('value', this.handleDataLoaded); 
} 

for (var i in this.state.items) { 
      var key = items[i]['.key']; 
      if(items[i].done){ 
       this.ref.child(key).remove(); 
      } 
} 

Il ciclo termina prematuramente, ad esempio prima di eliminare tutte le voci completate, perché viene richiamata la funzione di rendering.

+0

'done' è un valore bollean all'interno destra ramo articolo? – adolfosrs

+0

quale versione di firebase stai correndo? Sto chiedendo perché react-fire non supporta le ultime modifiche all'API FB. –

+0

@adolfosrs yes è @U r s u s, sto usando firebase 3.0.5 e reactfire 1.0.0 – Tannaa

risposta

18

È possibile eliminare tutti gli elementi completati in una sola volta, utilizzando un aggiornamento di multi-posizione:

var updates = {}; 
for (var i in this.state.items) { 
    var key = items[i]['.key']; 
    if(items[i].done){ 
     updates[key] = null; // setting value to null deletes the key 
    } 
} 
this.ref.update(updates); 
+0

"// l'impostazione del valore su null cancella la chiave." Questo è quello di cui avevo bisogno, grazie! –

+0

Se l'impostazione del valore su 'null' cancella la chiave, come è possibile aggiornare una chiave con un valore nullo? – Crashalot

+0

@Crashalot 'null' è una chiave non valida –

Problemi correlati