[英]Node, Mongoose connection to IBM Bluemix Compose for Mongodb
您如何使用猫鼬: https : //github.com/Automattic/mongoose ?
这里的示例: https : //github.com/IBM-Bluemix/compose-mongodb-helloworld-nodejs效果很好。 这是示例mongo代码的简化代码段:
MongoClient.connect(credentials.uri, { // step 1: connect
mongos: {...},
function(err, db) {
if (err) {
console.log(err);
} else {
mongodb = db.db("examples"); // step 2: create or use database
}
}
);
我找不到使用两步连接过程的猫鼬示例。
我注意到Compose for Mongodb不支持直接连接到现有的示例数据库。 连接到该URL:
mongodb://admin:PW@bluemix...4.dblayer.com:22601,bluemix...0.dblayer.com:22601/examples'
导致“ MongoError:身份验证失败”
以下是使用Compose for MongoDB和Mongoose的示例的摘录:
var mongoDbUrl, mongoDbOptions = {};
var mongoDbCredentials = appEnv.getServiceCreds("mycomposedb").credentials;
var ca = [new Buffer(mongoDbCredentials.ca_certificate_base64, 'base64')];
mongoDbUrl = mongoDbCredentials.uri;
mongoDbOptions = {
mongos: {
ssl: true,
sslValidate: true,
sslCA: ca,
poolSize: 1,
reconnectTries: 1
}
};
console.log("Connecting to", mongoDbUrl);
mongoose.connect(mongoDbUrl, mongoDbOptions); // connect to our database
然后,您可以使用useDb切换数据库。
Frederic的代码段(使用Mongo驱动程序)或他链接的源代码(连接到admin db)都不允许使用mongoose连接到自定义的MongoDB。
为了使用猫鼬 IBM Compose连接到定制数据库,您必须提供与Compose提供的缺省连接字符串不同的连接字符串。
以下连接字符串模板有效:
var connectionUrl = 'mongodb://<username>:<password>@<hostname>:<port>,<hostname-n>:<port-n>/<db-name>?ssl=true&authSource=admin';
具有以下选项:
var sslCA = [fs.readFileSync('mongo.cert')];
var options = {
ssl: true,
sslValidate: true,
sslCA,
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.