Я пытаюсь подключиться к базе данных через узел. Я заставил его работать с небольшими базами данных, используя Mongo URL в форме:
mongodb://[username]:[password]@db1-a0.example.net:27017/[DB-Name]
Когда я переключил его на использование большей БД, используя URL-адрес Mongo в форме:
mongodb://[username]:[password]@db1-a1.example.net:27017,db2.example.net:2500/[DB-Name]?replicaSet=test
Он выдает ошибку «RangeError: превышен максимальный размер стека вызовов» и не подключается. Этот URL-адрес - единственное, что изменилось между базами данных.
Я проверил детали базы данных и могу получить к ней доступ через RoboMongo / Robo 3T, так что база данных определенно существует.
Попытка подключиться через Mongoose версии ^ 5.2.10 с использованием следующего кода:
function connect() {
if (MONGO_URL) {
mongoose.connect(MONGO_URL, err => {
if (err) {
console.info('error connecting')
console.info(err)
}
})
} else {
mongoose.connect(`mongodb://${host}`, {
user,
pass,
dbName,
useNewUrlParser: true //depresiation issue
}, err => {
if (err) {
console.info('error connecting')
console.info(err)
}
})
}
}
mongoose.connection.on('error', (message) => {
console.info('connection error!') //This is logged
console.info(message)
process.exit()
})
mongoose.connection.on('disconnected', connect)
connect()



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Похоже, вы пытаетесь использовать набор реплик. Если да, попробуйте подключиться, как показано ниже:
var uri = `mongodb://${userName}:${encodeURIComponent(password)}@${clusterName}/${dbName}?ssl=true&replicaSet=${process.env.replicaSetName}&authSource=${authDB}`
var db = mongoose.connect(uri).then().catch() // Whatever inside the then and catch blocks`