'mongodump' не распознается как внутренняя или внешняя команда, работающая программа или командный файл - PullRequest
0 голосов
/ 19 июня 2020

Здесь я собираюсь создать резервную копию моей базы данных MongoDB Atlas в моем проекте MERN . Я использую приведенный ниже код для резервного копирования, но это сообщение отображается, когда я запускаю сервер express. Сначала создайте mongodb_backup. js, cron. js и потребуйте файл server. js. Все они работают нормально. И еще одно, это правильный URL-адрес для dbOptions.host.

mongodb_backup. js

var fs = require('fs');
var _ = require('lodash');
var exec = require('child_process').exec;
const path = require('path');
const backupDirPath = path.join(__dirname, 'database-backup/');

var dbOptions = {
    user: '****',
    pass: '****',
    host: 'mongodb+srv://cluster0-gtick.mongodb.net/test?retryWrites=true&w=majority',
    port: 27017,
    database: 'Project-Management',
    autoBackup: true,
    removeOldBackup: true,
    keepLastDaysBackup: 2,
    autoBackupPath: backupDirPath
};
exports.stringToDate = dateString => {
    -------------------- all works fine
};
exports.empty = mixedVar => {
    ------------------------all works fine
};
// Auto backup function
exports.dbAutoBackUp = () => {
    if (dbOptions.autoBackup == true) {
        let date = new Date();
        let beforeDate, oldBackupDir, oldBackupPath;
        currentDate = this.stringToDate(date);
        let newBackupDir = ------;

        let newBackupPath = dbOptions.autoBackupPath + '-mongodump-' + newBackupDir;
        if (dbOptions.removeOldBackup == true) {
            -------------all works fine          
        }

        // Command for mongodb dump process
        let cmd =
            'mongodump --host ' +
            dbOptions.host +
            ' --port ' +
            dbOptions.port +
            ' --db ' +
            dbOptions.database +
            ' --username ' +
            dbOptions.user +
            ' --password ' +
            dbOptions.pass +
            ' --out ' +
            newBackupPath;

        exec(cmd, (error, stdout, stderr) => {
            if (this.empty(error)) {
                // check for remove old backup after keeping # of days given in configuration.
                if (dbOptions.removeOldBackup == true) {
                    if (fs.existsSync(oldBackupPath)) {
                        exec('rm -rf ' + oldBackupPath, err => { });
                    }
                }
            }
            else{
                console.log(stderr); //here consoling the error
            }
        });
    }
};
...