2017-02-18 21 views
0

Я использую следующие инструкции: https://help.compose.com/docs/connecting-to-mongodb#mongoose-node-and-composeTrouble Подключение к compose.io 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) 

На данный момент я получаю ошибку аутентификации Failure:

если я удалить ?ssl=true из строки соединения, я получаю ошибку: no mongos proxy available

Кто-нибудь есть мангуста работать с compose.io в последнее время?

ответ

0

Если вы не используете sharding in mongo set mongos до false. Вы можете прочитать о оштукатуривании в монго здесь https://docs.mongodb.com/manual/core/sharded-cluster-query-router/

+0

Видимо с compose.io это требуется использовать mongos (в соответствии с их документацией) Они говорят мне, чтобы перейти вверх mongos: истина в Монго: {. ..vars}, но я все равно получаю ту же ошибку. – d4rklit3

0

Как выясняется. У меня был пароль, который не соответствовал строке подключения. Я сменил пароль на что-то более короткое, и он сработал. 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)