Używasz mangusty, emituje ona zdarzenia (wzorzec EventEmitter), gdy baza danych nie działa i gdy baza danych jest ponownie łączona i ponownie uruchamiana.
z kodu mongoose znalezionego tutaj widzimy, że połączenie db biblioteki - connection.js
ma emitowane następujące zdarzenia:* @param {Mongoose} bazuje na instancji mongoose* @inherits NodeJS EventEmitter
http://nodejs.org/api/events.html#events_class_events_eventemitter
* @event connecting
:Emitowane, gdy connection.{open,openSet}()
jest wykonywany na tym połączeniu.
-
@event
connected
:Emitowane, gdy to połączenie pomyślnie łączy się z bazą danych. Może być emitowany wielokrotnie razy wreconnected
scenariusze. -
@event
open
:Emitowane poconnected
ionOpen
jest wykonywany na wszystkich tych modelach połączeń. -
@event
disconnecting
:Emitowane, gdyconnection.close()
został wykonany. -
@event
disconnected
:Emitowane po odłączeniu od bazy danych. -
@event
close
:Emitowane podisconnected
ionClose
wykonywane na wszystkich tych modelach połączeń. -
@event
reconnected
:Emitowane poconnected
a następniedisconnected
, po którym następuje pomyślne kolejne udane połączenie. -
@event
error
:Emitowany, gdy wystąpi błąd w tym połączeniu. -
@event
fullsetup
:Emitowany w scenariuszu z zestawem replik, gdy połączony jest podstawowy i co najmniej jeden element pomocniczy określony w ciągu połączenia. -
@event
all
:Emitowany w scenariuszu z zestawem replik, gdy wszystkie węzły określone w ciągu połączenia są połączone.
Gdy baza danych przestanie działać, otrzymasz dwa zdarzenia:1. odłączony2. błąd (błąd napotkany przez kierowcę)
Gdy baza danych zostanie ponownie uruchomiona, otrzymasz zdarzenie ponownego połączenia.
Więc nie musisz próbować wyłapywać błędu, zamiast tego powinieneś słuchać tych zdarzeń.
Więcej przydatnych informacji na temat awarii połączenia i ponownego łączenia można znaleźć tutaj .
W tym artykule wyjaśniono, jak używać i konfigurować autoReconnect i bufferMaxEntries zgodnie z Twoimi ustawieniami.