Você está usando o mangusto, ele emite eventos (o padrão EventEmitter) quando o banco de dados está inativo e quando o banco de dados está se reconectando e reativando.
do código do mangusto encontrado aqui podemos ver que a conexão db da biblioteca - connection.js
tem os seguintes eventos que são emitidos:* @param {Mongoose} base a instância do mongoose* @inherits NodeJS EventEmitter
http://nodejs.org/api/events.html#events_class_events_eventemitter * @event
connecting
:Emitido quando connection.{open,openSet}()
é executado nesta conexão. -
@eventoconnected
:Emitido quando esta conexão se conecta com sucesso ao banco de dados. Pode ser emitido vários vezes emreconnected
cenários.
-
@eventoopen
:Emitido apósconnected
eonOpen
é executado em todos esses modelos de conexões.
-
@eventdisconnecting
:Emitido quandoconnection.close()
foi executado.
-
@eventdisconnected
:Emitido após ser desconectado do banco de dados.
-
@eventoclose
:Emitido apósdisconnected
eonClose
executado em todos esses modelos de conexões.
-
@eventreconnected
:Emitido apósconnected
e posteriormentedisconnected
, seguido por outra conexão bem-sucedida.
-
@eventoerror
:Emitido quando ocorre um erro nesta conexão.
-
@eventfullsetup
:Emitido em um cenário de conjunto de réplicas, quando o primário e pelo menos um secundário especificado na cadeia de conexão estão conectados.
-
@eventoall
:emitido em um cenário de conjunto de réplicas, quando todos os nós especificados na cadeia de conexão estão conectados.
Quando o banco de dados estiver inativo, você receberá dois eventos:1. desconectado2. erro (o erro que o driver encontrou)
Quando o banco de dados estiver ativo novamente, você receberá o evento de reconexão.
Portanto, você não precisa tentar capturar o erro, mas deve ouvir esses eventos.
Mais informações úteis sobre falhas de conexão e reconexão podem ser encontradas aqui .
Este artigo explica como usar e configurar o autoReconnect e o bufferMaxEntries de acordo com suas configurações.