2016-06-28 12 views
8

私は、reactFire、Firebase、およびreactJSを使用して単純なTodoアプリケーションを構築しています。私が実行している問題は、リスト内の完成したエントリを一括削除しようとするときです。Firebase - 子ノードの一括削除

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(); 
      } 
} 

ループは、レンダリング関数が呼び出されるため、完了したすべてのエントリを早期に削除する前に終了します。

+0

'done'は、アイテムの分岐右内側bollean値はありますか? – adolfosrs

+0

実行しているfirebaseのバージョンは? react-fireはFB APIの最新の変更をサポートしていないので私は尋ねています。 –

+0

@adolfosrsはい、私はfirebase 3.0.5とreactfire 1.0.0を使用しています。 – Tannaa

答えて

18

あなたは、マルチロケーション・アップデートを使って、一度にあるすべて完了した項目を削除することができます。

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

"//値をnullに設定するとキーが削除されます。"それは私が必要なものです、ありがとう! –

+0

値を 'null'に設定するとキーが削除される場合、どのようにキーをヌル値に更新できますか? – Crashalot

+0

@Crashalot 'ヌル 'は無効なキーです –

関連する問題