Проблемы с подключением к compose.io mongodb экземпляру с помощью mongoose
Я использую эти инструкции: https://help.compose.com/docs/connecting-to-mongodb
Это строка подключения, которую они дали мне:
MONGO_URI=mongodb://*****:******@aws-us-west-2-portal.1.dblayer.com:15782,aws-us-west-2-portal.0.dblayer.com:15782/mydbname?ssl=true
Это код, который я пытаюсь:
certFileBuff = [fs.readFileSync(MONGO_CERT_PATH)]
options = {
mongos: true,
sslCA: certFileBuff,
sslValidate: false,
ssl: true
}
mongoose.connect(MONGO_URI, options)
В этот момент я получаю сообщения об ошибках аутентификации:
если я удалю ?ssl=true
из строки подключения я получаю ошибку:no mongos proxy available
У кого-нибудь есть мангуст, работающий с compose.io в последнее время?
2 ответа
Как выясняется. У меня был пароль, который не ладил со строкой подключения. Я изменил пароль на что-то более короткое, и это сработало. fwiw пароль, который не работал, был: tapasleechframegoldrabbitsauceb88 (очевидно, я больше не использую)
Что я узнал: если вы получите mongos proxy error
это, вероятно, плохой конфиг. Удостовериться ssl=true
устанавливается в строке подключения и ssl: true
в вашем конфиге.
Если вы получаете code: 18
ошибка аутентификации, тогда пароль либо неправильный, либо неправильно отформатирован.
Вот мой последний рабочий код:
const MONGO_URI = mongodb://****:*****@aws-us-west-2-portal.1.dblayer.com:15782,aws-us-west-2-portal.0.dblayer.com:15782/dbName?ssl=true
let ca, options = {}
if(MONGO_CERT_PATH) {
try {
ca = fs.readFileSync(encodeURI(MONGO_CERT_PATH))
options = {
mongos: {
ssl: true,
sslValidate: true,
sslCA: [ ca ]
}
}
} catch(err) {
logger.warn('mongo ssl cert missing')
}
}
let db = mongoose.connection
db.on('error', (e) => logger.error('connection error:', e))
db.once('open', () => {
logger.info('db connected')
})
mongoose.connect(MONGO_URI, options)
Если вы не используете шардинг в наборе монго mongos
в false
, Вы можете прочитать о шардинге в монго здесь https://docs.mongodb.com/manual/core/sharded-cluster-query-router/