exports.onWriteCancelExtraStorage = functions.database.ref("users/{userID}").onWrite((snapshot,context) => { const dues = snapshot.after.val(); const userID = context.params.userID const query = { directory: userID+"/images/" }; return admin.storage().bucket().getFiles(query,function(err, files) { if (!err) { return files.forEach(function(file) { var boolIfFindend = false if (snapshot.after.exists()) { snapshot.after.forEach(function (childSnapshot){ const imageName = childSnapshot.key; if (childSnapshot.child("serviceImageUrl").val() === file.name) { console.log("Trovata l'immagine "+ file.name) boolIfFindend = true } }); if (boolIfFindend === false) { console.log("Questa immagine è da eliminare perchè non è stata trovata : "+file.name); file.delete() } else { console.log("Questa immagine non è da eliminare perchè è stata trovata : "+file.name); }} }); } else { console.log(err) return 0 } });});原木:Questa immagine non è da eliminare紧接着Questa immagine è da eliminare我正在尝试从图像中清除数据库,这些图像仍然独立且未绑定到数据库中的任何数据。它实际上效果很好,但有时会出现一些问题。图像被连续评估两次,生成两个不同且相反的连续日志,循环中必须存在一个错误,导致首先评估图像为不被删除,然后作为删除,而实际上它不应该被评估两次,数据库是好的,他们确保不应该删除图像,因为绑定它的数据存在于数据库中。不应删除该图像,但仍应将其删除。为什么?
1 回答

海绵宝宝撒
TA贡献1809条经验 获得超8个赞
修复:数据库中保存了两个订阅,这意味着当第一个“onWrite”开始时,它发现第二个订阅仍未完全加载到数据库中并删除了第二个订阅的图像,我通过处理文件的元数据日期而不删除不到一天前更新的文件来解决!
添加回答
举报
0/150
提交
取消