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 excluare
сразу после
Questa immagine è da excluare
Я пытаюсь очистить базу данных от изображений, которые остались одни и не привязаны к каким-либо данным в базе данных. На самом деле это работает хорошо, но время от времени что-то идет не так.
Изображение оценивается дважды подряд, генерируя два разных и противоположных друг другу журнала, в цикле должна быть ошибка, которая приводит к оценке изображения сначала, чтобы не удалять, а затем, чтобы удалить, хотя на самом деле он не должен оцениваться дважды, база данных в порядке, и они уверены, что изображение не должно удаляться, потому что данные, которые связывают его, существуют в базе данных.
Изображение не должно удаляться, но все равно удаляется. Почему?