Wie kann man sicherstellen, dass Node.js nach dem Trennen der MonogDB-Verbindung weiter läuft?

Ich habe eine Fehlerbehandlungs-Mittelsoftware in Express, die versucht, alle eingehenden Fehler abzufangen:

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

Aber aus irgendeinem Grund, wenn ich schließemongod Prozess stürzt meine Anwendung mit dem folgenden Stack-Trace ab:

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

Ich habe versucht, die folgende Konfiguration zu verwenden, aber es hat mir nicht geholfen:

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

mongoose.connect(config.db, options);

Man könnte sich fragen: "Warum soll Ihre Anwendung ausgeführt werden, wenn sie ohne Datenbankverbindung im Wesentlichen nicht mehr funktioniert?" Ich möchte nicht, dass es abstürzt und sich selbst neu startet. Supervisor- und Forever-Module scheinen nach einer bestimmten Anzahl von Versuchen nicht mehr zu versuchen, die Verbindung wiederherzustellen, sodass Ihre Anwendung abstürzt.

Wenn MongoDB abstürzt, möchte ich den Benutzern im Idealfall eine 500.jade-Fehlerseite anzeigen. In der Zwischenzeit sollte der Server weiterhin alle 10 Sekunden versuchen, die Verbindung zur Datenbank wiederherzustellen. Sobald die Verbindung wieder hergestellt ist, können Sie den normalen Betrieb wieder aufnehmen.

BEARBEITEN: Keine der unten aufgeführten Lösungen hat für mich funktioniert, mit Ausnahme von Domains.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage