计算子项的数量并删除一些

Count number of childs and remove some

本文关键字:删除 计算      更新时间:2023-09-26

我正在计算firebase数据库中的子级数量,并检查是否有100个。如果是,则应删除前30个。这是我的密码。我不确定我是否应该在这里使用.remove(),但我把它放在那里只是为了让你知道我要做什么

// counts number of childs
    myDataRef.on('value', function (snapshot) {
        var count = 0;
        snapshot.forEach(function () {
            count++;
        });
        // if childs are == 100, remove the first 30
        if (count == 100) {
            myDataRef.remove( /* first 30 */ );
        }
    });

还有一把小提琴:http://jsfiddle.net/y920s63h/

希望我已经清楚了!谢谢

查看Web API,每个快照上都有一个numChildren()方法。这似乎是获得计数的第一选择。

API文档还显示.remove()不接受任何参数;所以不会有办法做任何类型的CCD_ 1。

人们可能会尝试.limit(30).remove()来获取前30个,并对它们进行移除,但遗憾的是,limit()返回的Query对象不支持remove()方法。

相反,numChildren()和forEach()的组合似乎是最好的方法:

myDataRef.on('value', function (snapshot) {
    if( snapshot.numChildren() >= 100 ) {
       var i = 0;
       snapshot.forEach(function(ss) {
          ss.ref().remove();
          // returning true causes forEach() to stop iterating
          // so we can use that to only grab 30
          return ++i == 30;
       });
    }
});