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

时间:2014-10-18 21:35:36

标签: javascript jquery firebase

我试图计算我的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/

希望我已经清楚了!感谢。

1 个答案:

答案 0 :(得分:2)

查看Web API,每个快照都有numChildren()方法。这似乎是获得点数的明显首选。

API文档还表明.remove()不接受任何参数;所以不可能做任何.remove( /* first 30 */ );的方式。

有人可能会尝试.limit(30).remove()抓住前30个并对其进行删除,但不幸的是,limit()返回的Query对象并不支持remove()方法。 / p>

相反,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;
       });
    }
});