Как запустить команду mongodump в дочернем процессе spawn/exec с аргументами

Мне нужно запустить команду mongodump с аргументами ниже

    var dbhost = mongoose.connection.host || "127.0.0.1",
                    dbport = mongoose.connection.port,
                    dbname = mongoose.connection.name,
                    dbuser = mongoose.connection.options.user,
                    dbpass = mongoose.connection.options.pass,
                    backupPath = path,
                    date = new Date(),
                    currentDate =  date.toLocaleString(),
                    backupFileName ='DBBACKUP-'+currentDate;

как передать вышеуказанные переменные дочернему процессу

Я пробовал с кодом ниже

var backupDB = spawn('mongodump --host '+dbhost+' --port '+dbport+' --username '+dbuser+' --password '+dbpass+' --db '+dbname+' --archive=backupFileName.gz --gzip');
backupDB.stdout.on('data',function(data){ console.log('stdout: ' + data);

выдало эту ошибку

error: uncaughtException: spawn mongodump --host 127.0.0.1 --port 27017 --username --password --db mydb --archive=backupFileName.gz --gzip ENOENT 

person Srinivas    schedule 30.05.2017    source источник
comment
Не можете ли вы просто интерполировать значения в строку?   -  person Neil Lunn    schedule 30.05.2017
comment
Но на самом деле просто прочитайте здесь литералы шаблонов   -  person Neil Lunn    schedule 30.05.2017


Ответы (2)


Согласно справочному руководству, spawn() принимает имя команды, а массив аргументов для передачи этой команде:

var backupDB = spawn('mongodump', [
  '--host',     dbhost,
  '--port',     dbport,
  '--username', dbuser,
  '--password', dbpass,
  '--db',       dbname,
  '--archive=backupFileName.gz',
  '--gzip'
]);
person robertklep    schedule 30.05.2017

Я пробовал это, и он отлично работает

var backupDB = exec('mongodump --host='+dbhost+' --port='+dbport+' --username='+dbuser+' --password='+dbpass+' --db='+dbname+' --archive='+backupPathDir+'/'+backupFileName+'.gz  --gzip');
            backupDB.stdout.on('data',function(data){
                console.log('stdout: ' + data);// process output will be displayed here
            });
person Srinivas    schedule 31.05.2017