2017-02-18 79 views
0

我使用這些指令: https://help.compose.com/docs/connecting-to-mongodb#mongoose-node-and-compose麻煩連接到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) 

在這一點上,我得到驗證失敗錯誤:

如果我從連接字符串中刪除?ssl=true我得到的錯誤: no mongos proxy available

沒有人有貓鼬與compose.io最近的工作?

回答

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)