Ошибка подключения MongoDB от NodeJS бэкэнда при использовании mongoose - PullRequest
1 голос
/ 03 марта 2020

Я развернул репликационный набор mongodb, к которому я пытаюсь подключиться с помощью node js внутреннего приложения. Мой код подключения выглядит следующим образом:

mongoose.connect(config.database, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useFindAndModify: false,
  useCreateIndex: true,
  dbName:"db7_0",
  user:'****',
  pass:'****'

}).catch(function (err) {
  console.log('The connection to the database could not be established. Error details: ', err);
});

'config.database' - это URL-адрес подключения, который я собрал, используя документацию mongodb, и следующий:

  database: "mongodb://user:pw@xxx.eu-west-1.compute.amazonaws.com:27017,xxx.eu-west-1.compute.amazonaws.com:27017,xxx.eu-west-1.compute.amazonaws.com:27017/db7_0?replicaSet=rs0"

Примечание: 'user', 'pw' и 'xxx' - это просто заполнители для реальных деталей, которые я использовал в строке подключения.

Когда я запускаю сервер и соединение с базой данных создается, мои журналы показывают следующее: enter image description here

И мое приложение выдает следующую ошибку MongoNetworkError:

The connection to the database could not be established. Error details:  MongoTimeoutError: Server selection timed out after 30000 ms
    at Timeout._onTimeout (C:\Dev\sc\node_modules\mongoose\node_modules\mongodb\lib\core\sdam\server_selection.js:308:9)
    at listOnTimeout (internal/timers.js:549:17)
    at processTimers (internal/timers.js:492:7) {
  name: 'MongoTimeoutError',
  [Symbol(mongoErrorContextSymbol)]: {}
}
Database error MongoTimeoutError: Server selection timed out after 30000 ms

Я пробовал много разных подходов к решению проблемы, таких как указание пользователя, пароля и базы данных в строке подключения, а также параметров mon goose .connect, но это не помогло. разница. Я был изначально на Mon goose v5.9.2 (сейчас v5.8.2), и поведение остается прежним.

Также обратите внимание, что выполнение следующих команд в командной строке работает:

mongo "mongodb://user:pw@xx.xx.xxx.xx:27017/db7_0"

Так что я подозреваю, что это может быть ошибка mon goose, однако я изо всех сил пытаюсь выяснить, выпуск.

1 Ответ

0 голосов
/ 03 марта 2020

Оказывается, моя проблема была вызвана настройкой набора реплик. Я настроил каждого из членов replicaSet, используя адрес ipv6 каждого участника, который по какой-то причине не позволял мне подключаться к набору реплик. Затем я перенастроил набор реплик и изменил адрес каждого хоста на IPL-адрес publi c DNS каждого участника, и это сработало.

...