Автоматическое переподключение соединения mongoose с контейнером Монго (докер) не работает - PullRequest
0 голосов
/ 23 мая 2019

У меня проблема с двумя контейнерами:

  • API
  • Mongo

Я хочу, чтобы мой API автоматически переподключался к контейнеру Mongo

Когда мой API работает и Mongo выключен, я хочу, чтобы моя повторная попытка API, но ни одна из опций mongoose не работала, ни одно из событий повторной попытки повторного подключения не работает

Мой API отправляет мне ошибку "Ошибка: getaddrinfo ENOTFOUND mongo", (mongo - это имя моего образа, так что это логика, потому что docker не может разрешить с его собственным DNS, потому что mongo не запущен)

Я не могу получить событие повтора соединения create mongoose.

Некоторый код:

Прослушиватель событий соединения

  mongoose.connection.on('connecting', () => {
    statusConnection = 'connecting'
    logger.info({
      message: 'Database status',
      statusConnection: 'Connecting'
    })
  })

mongoose.connection.on('connected', () => {
    statusConnection = 'connected'
    logger.info({
      message: 'Database status',
      statusConnection: 'connected'
    })
  })

  mongoose.connection.on('disconnected', () => {
    statusConnection = 'disconnected'
    logger.warn({
      message: 'Database status',
      statusConnection: 'disconnected'
    })
  })

  mongoose.connection.on('reconnected', () => {
    statusConnection = 'reconnected'
    logger.warn({
      message: 'Database status',
      statusConnection: 'reconnected'
    })
  })


  mongoose.connection.on('reconnect', () => {
    statusConnection = 'reconnect'
    logger.warn({
      message: 'Database status',
      statusConnection: 'reconnect'
    })
  })


  mongoose.connection.on('reconnectFailed', () => {
    console.log('-----> reconnectFailed')
    statusConnection = 'reconnectFailed'
    logger.warn({
      message: 'Database status',
      statusConnection: 'reconnectFailed'
    })
  })

  mongoose.connection.on('reconnectTries', () => {
    console.log('-----> reconnectTries')
    statusConnection = 'reconnectTries'
    logger.warn({
      message: 'Database status',
      statusConnection: 'reconnectTries'
    })
  })

  mongoose.connection.on('error', (error) => {
    statusConnection = 'disconnected'
    logger.error({
      message: 'Database status',
      statusConnection: 'disconnected',
      error
    })
    // process.exit()
  })

Код соединения

  let opts = {
      username: configService.database.username,
      password: configService.database.password,
      host: configService.database.host,
      port: configService.database.port,
      database: configService.database.database,
      autoReconnect: true,
      reconnectTries: 10,
      reconnectInterval: 500
    }
    await mongoose.connect(opts)

Любая помощь

Пиво дляты, если ты в Париже :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...