Изображение не должно быть удалено, но почему? - PullRequest
1 голос
/ 07 мая 2020
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

Я пытаюсь очистить базу данных от изображений, которые остались одни и не привязаны к каким-либо данным в базе данных. На самом деле это работает хорошо, но время от времени что-то идет не так.

Изображение оценивается дважды подряд, генерируя два разных и противоположных друг другу журнала, в цикле должна быть ошибка, которая приводит к оценке изображения сначала, чтобы не удалять, а затем, чтобы удалить, хотя на самом деле он не должен оцениваться дважды, база данных в порядке, и они уверены, что изображение не должно удаляться, потому что данные, которые связывают его, существуют в базе данных.

Изображение не должно удаляться, но все равно удаляется. Почему?

1 Ответ

0 голосов
/ 09 мая 2020

Исправлено: две подписки были сохранены в базе данных, это означало, что при запуске первой "onWrite" вторая подписка все еще не была полностью загружена в базу данных и удалено изображение второй, я решил, работая над даты метаданных файла и не удаление файлов, обновленных менее чем за сутки!

...