Я использую child_process.spawn для восстановления mongodb из скрипта.Я запускаю этот процесс дважды параллельно с обещанием.В то время как первый успешно возвращается, второй просто застревает при создании вывода через stderr, этот код здесь никогда не срабатывает:
spawnprocess.on('close', (code) => {
if (code === 0) {
console.log(`Log Test Database Setup: ${collection} successfully restored`);
resolve();
} else {
reject('There was an error');
}
});
Это то, что возвращается, пока я не нажму CTRL + C:
Progress: 2019-06-27T21:19:43.962+0200 [########################] DB.collection2 1.39MB/1.39MB (100.0%)
Progress: 2019-06-27T21:19:46.962+0200 [########################] DB.collection2 1.39MB/1.39MB (100.0%)
Progress: 2019-06-27T21:19:49.962+0200 [########################] DB.collection2 1.39MB/1.39MB (100.0%)
Функция запуска восстановления
const restoreDB = function(drop, collection) {
return new Promise((resolve, reject) => {
console.log(`Log Test Database Setup: ${collection} restore started`);
let spawnArguments = [
`./dump/db/${collection}.bson`,
'--host', 'localhost',
'--port', portDev,
'--db', dbNameDev
];
if (drop) {
spawnArguments.push('--drop');
}
const spawnprocess = spawn(mongorestorePath, spawnArguments,
{shell: true}
);
spawnprocess.stderr.on('data', (data) => {
console.log('Progress: ', data.toString('ascii'));
});
spawnprocess.on('close', (code) => {
if (code === 0) {
console.log(`Log Test Database Setup: ${collection} successfully restored`);
resolve();
} else {
reject('There was an error');
}
});
});
};