【发布时间】:2020-08-23 04:32:12
【问题描述】:
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
我正在尝试从单独存在且未绑定到数据库中任何数据的图像中清除数据库。它实际上运行良好,但有时会出现问题。
图像被连续评估两次,生成两个不同且相反的连续日志,循环中肯定有错误导致图像首先被评估为不被删除,然后被删除,而实际上它不应该被评估两次,数据库是好的,他们确定不应该删除图像,因为绑定它的数据存在于数据库中。
图像不应被删除,但仍会被删除。为什么?
【问题讨论】:
-
在 Stack Overflow 上,请不要显示文字图片。将文本复制到问题本身中,以便于阅读、复制和搜索。
-
我无法弄清楚是什么不符合您的预期。请更新问题,以更具体地说明文件在不应该被删除的情况下被删除。鉴于您在问题中提供的内容,我们应该能够重现这种情况。
-
问题更新现在可以了吗?
标签: javascript firebase firebase-realtime-database google-cloud-functions firebase-storage