当我的child_removed事件被触发时,它也会触发我的child_added。我怎么能避免这个?

时间:2017-01-05 16:44:13

标签: firebase firebase-realtime-database

现在我正在编写一个webapp,将Firebase作为数据存储。

我的问题是关于那个。我设置了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 个答案:

答案 0 :(得分:1)

根据我对您的代码了解程度,您将收到child_added事件以及child_removed事件。

但只有从last item移除posts时才会发生这种情况。

根据你的代码:

db.ref('posts/').limitToLast(1).on('child_added',(snapshot,prevChildKey)=>{...});
每次在child_added末尾添加新子项时,<posts将被触发,即last child(因为limitToLast(1))。因此,每当posts的最后一个孩子被移除时,second last child就会成为last child,而firebase会将其作为最后一个新孩子的添加。因此它会触发child_added事件。

如需了解更多信息,请仔细阅读Firebase limitToLast Documentation,并仔细阅读。