Как правильно отключить mongodb из node.js? - PullRequest
3 голосов
/ 29 февраля 2012

Я запускаю mongodb как дочерний процесс из node.js и требую выключения и перезапуска по требованию.использование Child_Process.kill ("SIGINT") может показаться правильным способом, но оно оставляет монго в запутанном состоянии, которое не будет перезапущено до тех пор, пока не будет восстановлено (или файл блокировки удален). Есть ли лучший способ сделать это?

Спасибо, Энди

Ответы [ 3 ]

0 голосов
/ 28 октября 2016

вы можете попробовать что-то вроде этого:

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:27017/admin", function(err, db) {
	if (err) {
		console.log('mongodb is not running');
		process.exit(0);
	}
	else {
		db.command({
			shutdown : 1
		}, function(err, result) {
			console.log('shutting down mongodb - ', err.message);
			process.exit(0);
		});
	}
});
0 голосов
/ 06 мая 2018

вы можете завершить процесс mongodb, используя nodeJS на mac

1) сохранить приведенный ниже скрипт в script.js

'use strict'
const exec = require('child_process').execSync;
function killport(port) {
    var processId = null
    try {
        processId = exec(`lsof -t -i:${port}`);
    } catch (e) {
        console.log("could not catch");
    }
    if (processId !== null) { // if exists kill
       try{
           if(exec(`kill ${processId}`)){
               console.log("closed");
            }
       } catch(e){
            console.log("error executing");
       }
     }
  }
 killport(27017); 

2) запустить узел script.js

0 голосов
/ 29 февраля 2012

Выполнение kill("SIGINT") приведет к отключению базы данных без выполнения необходимых шагов и может привести к повреждению файлов данных. Поэтому я бы не рекомендовал делать это.

Обычный способ остановить базу данных - отправить команду { "shutdown" : 1 } или db.shutdownServer() из оболочки mongodb, но я не знаю точно, как это сделать из драйвера node.js.

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