@xutegino

Как заставить Экспресс делать попытки соединения с Монго?

Если я запущу сервер и при этом Монга будет выключена, то Экспресс не делает повторных попыток соединения и ничего не работает даже если Монга потом уже включена.

failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]


Вот эту ощибку он выдает при включении. Больше ничего. а любой запрос, даже если Монга включена сервер отвечает ожидаением.

В настройках Mongoose выставлено

mongoose.connect(process.env.DATABASE, { useMongoClient: true, autoReconnect: true, reconnectTries: 30, reconnectInterval: 1000 }, )


Получается reconnectTries и reconnectInterval касаются случая, только если уже было установлено соединение? Как исправить все в моем случае?
  • Вопрос задан
  • 260 просмотров
Пригласить эксперта
Ответы на вопрос 1
@andrey27
// node.js: 10.15.3
// express: 4.16.4
// mongoose: 5.9.6

const mongoose = require('mongoose');
let isFirstConnected = false;

mongoose.Promise = global.Promise;

function connectDB() {
  mongoose.connect(process.env.DATABASE, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  });
}

mongoose.connection.on('connected', () => {
  console.log(
    `Mongoose default connection open ${process.env.DATABASE}`,
  );
  isFirstConnected = true;
});

mongoose.connection.on('error', err => {
  console.log('Mongoose default connection error: ' + err);
  if (!isFirstConnected) {
    setTimeout(connectDB, 1000);
  }
});

mongoose.connection.on('disconnected', () => {
  console.log('Mongoose default connection disconnected');
});

connectDB();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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