Облачные функции bucket.upload () вообще не работает - PullRequest
0 голосов
/ 12 октября 2019

вот что я пытаюсь сделать с помощью Firebase:

  1. создать файл резервной копии из базы данных реального времени
  2. загрузить в хранилище Firebase
  3. делать это каждое утро

но у меня проблема с номером 2;после журнала успешного создания файла резервной копии не появляется никакой другой журнал, даже сообщение об ошибке.

нет журнала после создания файла

Еще хуже то, что иногдаработает, что заставляет меня сомневаться в согласованности функциональности.

мой код:

    var promiseFileCreation = function(fileName, jsonBackup){
        console.log("promiseFileCreation starting");
        return new Promise(function (resolve, reject){
            fs.writeFile('/tmp/'+fileName, jsonBackup, function(fs_err){
                if(!fs_err){
                    resolve("File "+fileName+" creation success");
                } else {
                    reject("File "+fileName+" creation failure: "+fs_err);
                }
            })
        }).catch(function(error){
            reject("FileCreation Error");
        })
    }

    var promiseBucketUpload = function(fileName, fileDest){
        console.log("promiseBucketUpload starting")
        return new Promise(function (resolve, reject){
            console.log("promiseBucketUpload promise starting")
            bucket.upload('/tmp/'+fileName, { destination: fileDest }, function(upload_err){
                if(!upload_err){
                    resolve("File "+fileName+" upload to "+fileDest+" success");
                } else {
                    reject("File "+fileName+" upload to "+fileDest+" failure: "+upload_err);
                }
            })
        }).catch(function(error){
            reject("BucketUpload Error: "+error);
        })
    }

    Promise.all([promiseText, promiseDate, promiseTitle, promiseLikedCount, promiseViewCount, promiseComments]).then(function (values){

        var jsonPostObj = {
            post: [],
            counter: []
        }

        jsonPostObj.post.push({
            date: values[1],
            text: values[0],
            title: values[2]
        })

        jsonPostObj.counter.push({
            likedCount: values[3],
            viewCount: values[4]
        })

        var jsonCommentsObj = JSON.parse(values[5]);

        const jsonArchiveObj = {...jsonPostObj, ...jsonCommentsObj}

        var jsonArchive = JSON.stringify(jsonArchiveObj);

        const yesterday = getYesterdayDateFull();
        var fileName = "archive_"+yesterday;
        var fileDest = "history/"+yesterday.substring(0,4)+"/"+yesterday.substring(4,6)+"/"+fileName;

        console.log("Archive file name: "+fileName);
        console.log("Archive destination: "+fileDest);

        promiseFileCreation(fileName, jsonArchive).then(function(resultSuccessFs){
            console.log(resultSuccessFs);

            // BUCKETUPLOAD here
            promiseBucketUpload(fileName, fileDest).then(function(resultSuccessBucket){
                console.log(resultSuccessBucket);

                return promiseBackupResult(true);
            }, function(resultFailureBucket){
                console.log(resultFailureBucket);

                return promiseBucketResult(false);
            })
        }, function(resultFailureFs){
            console.log(resultFailureFs);

            return promiseBackupResult(false);
        });
    }).catch(function(errPromiseAll){
        console.log("Promise.all error: "+errPromiseAll);

        return promiseBackupResult(false);
    })
}

Я удалил ненужные коды, как и другие обещания. Кажется, что создание файла работает нормально.

Кто-нибудь видит, почему bucket.upload () вообще не вызывается? Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...