2017-01-05 10 views
0

私は、データストアとしてFirebaseを使ってWebアプリケーションをプログラミングしています。私のchild_removedイベントがトリガーされると、私のchild_addedもトリガーされます。どうすればこれを避けることができますか?

私の質問はそれについてです。 child_addedchild_removedのクエリを設定しました。私のchild_removedがトリガされました。子を削除するときに子を削除すると、child_addedがトリガされます。これは私のコードです:

  db.ref('posts/').limitToLast(1).on('child_added',(snapshot,prevChildKey)=>{ 

      if(this.newPubsSearch){ 
       console.log(prevChildKey) 
       this.newPubs= true 
       console.log(snapshot) 
       var pub = snapshot.val() 
       pub['.key'] = snapshot.key 

       this.pubstmp.unshift(pub) 
      } 
      this.newPubsSearch = true 
     }) 

     db.ref('posts/').on('child_removed', function(snapshot){ 
      for(var pub in vm.pubs){ 
       if(vm.pubs[pub]['.key']==snapshot.key){ 
        vm.pubs.splice(pub,1) 
        break 
       } 
      } 
     }) 

他の誰かに起こりましたか? ご協力いただきありがとうございます。

答えて

1

コードを理解してから、child_addedイベントとchild_removedイベントが発生しています。

これは、postsからlast itemが削除された場合にのみ発生します。あなたのコードによると

db.ref('posts/').limitToLast(1).on('child_added',(snapshot,prevChildKey)=>{...}); 

child_addedは、新しい子がすなわちlast child(limitToLast(1)のため)postsの末尾に追加されるたびにトリガされます。したがって、最後の子postsが削除されると、second last childlast childになり、ファイアベースで最後に新しい子が追加されます。したがって、child_addedイベントがトリガーされます。

詳細については、Firebase limitToLast Documentationを参照し、十分に注意深くお読みください。

関連する問題