Как убедиться, что Node.js продолжает работать после разрыва соединения с MonogDB?

У меня есть промежуточное программное обеспечение для обработки ошибок в Express, которое пытается перехватить все входящие ошибки:

app.use(function(err, req, res, next){
  console.error(err.stack);
  res.status(500);
  res.render('500.jade');
});

Но по какой-то причине, когда я закрываюmongod процесс, мое приложение вылетает со следующей трассировкой стека:

Error: failed to connect to [localhost:27017]
    at null.<anonymous> (/<hidden>/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:540:74)
    at EventEmitter.emit (events.js:106:17)
    at null.<anonymous> (/<hidden>/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15)
    at EventEmitter.emit (events.js:98:17)
    at Socket.<anonymous> (/<hidden>/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:478:10)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:441:14
    at process._tickCallback (node.js:415:13)

Process finished with exit code 8

Я попытался использовать следующую конфигурацию, но это не помогло мне:

var options = {
  server:{
    auto_reconnect: true,
      poolSize: 10,
      socketOptions:{
      keepAlive: 1
    }
  },
  db: {
    numberOfRetries: 10,
    retryMiliSeconds: 1000
  }
}

mongoose.connect(config.db, options);

Кто-то может спросить: «Почему вы хотите, чтобы ваше приложение работало, если оно больше не работает без подключения к базе данных?». Я не хочу, чтобы он падал и перезагружался. Модули Supervisor и Forever, по-видимому, перестают пытаться переподключиться после определенного числа попыток, в результате чего ваше приложение зависает в аварийном состоянии.

В идеале, когда происходит сбой MongoDB, я хотел бы показать пользователям страницу ошибки 500.jade, в то время как сервер должен пытаться переподключаться к базе данных каждые 10 секунд. После повторного подключения возобновите все обычные операции.

РЕДАКТИРОВАТЬ: Ни одно из решений, опубликованных ниже, не работает для меня, за исключением доменов.

Ответы на вопрос(3)

Ваш ответ на вопрос