gpt4 book ai didi

firebase - snap.ref.remove() 正在删除父级中的所有节点,而不仅仅是其本身

转载 作者:行者123 更新时间:2023-12-02 06:18:45 25 4
gpt4 key购买 nike

我只是想删除前 2 个节点,但它却删除了整个分支。如果我注释掉remove(),它会正确地console.logs前2个节点,但是当我取消注释remove()时,它会删除该messagesRef中的所有节点,而不仅仅是前2个节点。

messagesRef.limitToFirst(2).on('child_added', function (snap) {
snap.ref().remove();
console.log(snap.val());

});

最佳答案

这是因为一旦您删除了一个,现在就会有一个"new"child_Added 到 2 的限制中。因此它将不断循环遍历所有这些,直到它们全部被删除。

Child 1
Child 2

->>delete child 1

Child 2
Child 3 ->new child_added event

etc...

为了解决这个问题,你可以保留一个计数器:

var numRemoved = 0; 
var ref = messagesRef.limitToFirst(2);
ref.on('child_added', removeFirstTwoChildren);
removeFirstTwoChildren(snap){
snap.ref().remove();
console.log(snap.val());
numRemoved++;
if(numRemoved === 2){
ref.off('child_added', removeFirstTwoChildren);
}
}

关于firebase - snap.ref.remove() 正在删除父级中的所有节点,而不仅仅是其本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30237298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com