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
https://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 wreconnectedscenariusze. -
@event
open:Emitowane poconnectedionOpenjest 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 podisconnectedionClosewykonywane na wszystkich tych modelach połączeń. -
@event
reconnected:Emitowane poconnecteda 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.