该图像不应删除,但为什么呢?

时间:2020-05-07 18:36:00

标签: javascript firebase firebase-realtime-database google-cloud-functions firebase-storage

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想像不到èdaeliminare

紧接着

Questa想像èda eliminare

我正在尝试从图像中清除数据库,这些图像将保持独立并且不与数据库中的任何数据绑定。它实际上运作良好,但有时会出问题。

连续对图像进行两次评估,生成两个不同且相对的连续日志,周期中必须存在一个错误,该错误导致首先对图像进行评估,使其不被删除,然后被删除,实际上不应进行两次评估,数据库是可以的,并且他们确定不应删除图像,因为绑定图像的数据已存在于数据库中。

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

1 个答案:

答案 0 :(得分:0)

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