无法使用mongoose连接到compose.io mongodb实例

时间:2017-02-18 21:56:20

标签: node.js ssl mongoose compose.io

我正在使用这些说明: https://help.compose.com/docs/connecting-to-mongodb#mongoose-node-and-compose

这是他们给我的连接字符串:

%f

这是我正在尝试的代码:

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

最近有没有人和moseoose一起使用compose.io?

2 个答案:

答案 0 :(得分:0)

如果您未在mongo set SelectedValue中使用分片到ComboBox。 你可以在这里阅读关于mongo的分片https://docs.mongodb.com/manual/core/sharded-cluster-query-router/

答案 1 :(得分: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)