图像不应该被删除,但它是,为什么


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
}
});
});

日志:

不可消除的缺陷

之后立即

消除

我正试图从那些单独存在且不与数据库中任何数据绑定的图像中清除数据库。它实际上运行得很好,但有时会出现问题。

图像连续评估两次,生成两个不同且相反的连续日志,循环中一定存在错误,导致图像首先被评估为不删除,然后被评估为删除,而事实上它不应该被评估两次,数据库是正常的,他们确信不应该删除图像,因为绑定图像的数据存在于数据库中。

图像不应被删除,但仍被删除。为什么?

修复:数据库中保存了两个订阅,这意味着当第一个"onWrite"启动时,它发现第二个订阅仍未完全加载到数据库中,并删除了第二个的图像,我通过处理文件的元数据日期而不删除不到一天更新的文件来解决!

相关内容

  • 没有找到相关文章

最新更新