我正在尝试删除数据库上超过 12 小时的多个节点。我正在使用 pub/sub 函数来触发此事件。我不知道我的代码是否实际上循环遍历所有节点,因为我没有使用特定的onWrite
数据库onCreate
触发器。这是数据库的图像示例
这是发布/订阅代码
exports.deletejob = functions.pubsub.topic('Oldtask').onPublish(() => {
deleteOldItem();
})
和 deleteOldItem 函数
function deleteOldItem(){
const CUT_OFF_TIME = 12 * 60 * 1000; // 12 Hours in milliseconds.
//var ref = admin.database().ref(`/articles/${id}`);
const ref = admin.database().ref(`/articles`);
const updates = {};
ref.orderByChild('id').limitToLast(100).on('value', function (response) {
var index = 0;
response.forEach(function (child) {
var element = child.val();
const datetime = element.timestamp;
const now = Date.now();
const cutoff = now - datetime;
if (CUT_OFF_TIME < cutoff){
updates[element.key] = null;
}
});
//This is supposed to be the returened promise
return ref.child(response.key).update(updates);
});
如果我做错了什么,我很想知道。发布/订阅是由已在谷歌云调度程序上设置的 JobScheduler 触发的