javascript - 计算 child 的数量并删除一些

标签 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 */ );
        }
    });

还有一把 fiddle : http://jsfiddle.net/y920s63h/

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

最佳答案

查看Web API ,有一个numChildren()每个快照上可用的方法。这似乎是获取计数的明显首选。

API 文档还表明 .remove() 不接受任何参数;所以没有办法执行任何类型的 .remove(/* first 30 */);

人们可能会尝试 .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;
       });
    }
});

关于javascript - 计算 child 的数量并删除一些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26444796/

相关文章:

Javascript - 在 Typeahead 中显示名称并获取 ID

node.js - Firebase 数据检索 : I am not able to retrieve data from the json created in the Firebase database

javascript - 如何检测页面上已访问和未访问的链接?

javascript - Meteor:使用下拉菜单从 mongodb 获取数据并显示结果

javascript - jQuery 动画导航如何在单击时折叠其他元素

javascript - jQuery 卸载与 beforeunload

javascript/jquery : responding to a user clicking "ok" on an alert dialog

jQuery;对于 new Image(),Chrome 图像宽度和高度 = 0

javascript - angularFire 3 路数据绑定(bind)不会更新函数

ios - 如果用户与互联网断开连接,Firebase 会更新 Firebase 上的值