从node.js中的firebase数据库批量删除项目

时间:2017-04-16 01:47:15

标签: node.js function firebase firebase-realtime-database

我正在尝试使用带有firebase功能的批量操作删除日期大于'2017-04-05'的所有节点。你能看出我在这里做错了吗?

应该删除的2个节点是红色的节点: enter image description here

这是失败的代码 - 你能看出什么是错的吗?另外,我担心这个的性能(我只会偶尔运行一次)。如果列表中有数百万个游戏,那么如果我每天只运行一次游戏会不会引起我的注意?

exports.remove = functions.https.onRequest((req, res) => {

    const deleteBeforeDate = req.query.deleteBeforeDate;

    var ref = admin.database().ref('games');

    var keysToDelete = {};
    for (var game in this.games) {

        var date = items[i]['.date'];
        if(date.value > '2017-04-05'){
            keysToDelete[game.key] = null;
        }
    }
    this.ref.update(keysToDelete);
});

非常感谢,

麦克

1 个答案:

答案 0 :(得分:5)

要确定要删除的密钥,您需要附加一个监听器。由于这是必需的,您也可以创建一个选择正确子项的查询,并仅删除那些:

var ref = admin.database().ref('games');
var deleteAfterDate = ref.orderByChild('date').startAt('2017-04-05');

deleteAfterDate.once('value').then(function(snapshot) {
  var updates = {};
  snapshot.forEach(function(child) {
    updates[child.key] = null;
  });
  ref.update(updates);
});