我正在尝试使用带有firebase功能的批量操作删除日期大于'2017-04-05'的所有节点。你能看出我在这里做错了吗?
这是失败的代码 - 你能看出什么是错的吗?另外,我担心这个的性能(我只会偶尔运行一次)。如果列表中有数百万个游戏,那么如果我每天只运行一次游戏会不会引起我的注意?
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);
});
非常感谢,
麦克
答案 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);
});