@AndrewRusinas

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

В данный момент у меня всё достаточно тривиально:
// Модуль бд
var mongoose = require('mongoose')

module.exports.connect = () => {
  mongoose.connect('mongodb://....', 
  { 
    useNewUrlParser: true, 
    useUnifiedTopology: true
  }
  )
  var db = mongoose.connection
  db.on('error', console.error.bind(console, 'connection error'))
  db.once('open', () => {
    console.log('Connection Succeeded')
  })
  return db
}


// app.js
const mongodb_conn_module = require('./config/mongoConnection')
const db = mongodb_conn_module.connect()


Код откровенно херовый, но я написал его еще год назад, когда только сел осваивать ноду и js вообще)

Вопрос в том, как правильно обрабатывать событие error? Оно случается стабильно, когда соединение рвется. Так как база в облаке, то вероятность разрыва крайне высока. Mongoose, вроде, по умолчанию имеет параметр keepAlive: true, но что-то он не спасает.
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
john36allTa
@john36allTa
alien glow of a dirty mind
Добавьте в mongoose.connect опции
reconnectTries: 2, // попытки реконнекта
reconnectInterval: 1000, //каждую секунду
connectTimeoutMS: 2000, // после 2 секунд ожидания соединения пытаться снова или сбрасывать

Дальше ловите события через
db.on('reconnected', function(){ console.log('reconnected successfully'});
db.on('reconnectFailed', function (error){
//Что делать если все попытки реконнекта провалились
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы