现在我正在编写一个webapp,将Firebase作为数据存储。
我的问题是关于那个。我设置了child_added
和child_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
}
}
})
是否发生在其他人身上? 谢谢你的帮助。
答案 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,并仔细阅读。