【发布时间】:2017-05-03 22:44:23
【问题描述】:
我在 MongoDB Atlas 上有一个副本集,这是我完美连接的 mongo shell 连接字符串:
$ mongo "mongodb://MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE?replicaSet=MY_REPLICASET-NAME-shard-0" --ssl --username MY_USERNAME --password MY_PASSWORD --authenticationDatabase MY_ADMIN_DATABASE
如何将其转换为在猫鼬中使用?如何构建我的 uri 和 options 变量?
我尝试了以下方法但没有成功:
// connection string using mongoose:
var uri = 'mongodb://MY_USER:MY_PASSWORD@' +
'MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,' +
'MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,' +
'MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE';
var options = {
replset: {
ssl: true,
authSource: 'MY_ADMIN_DATABASE',
rs_name: 'MY_REPLICASET_NAME-shard-0'
}
};
mongoose.connect(uri, options);
var db = mongoose.connection;
我尝试在选项中包含用户:并传递:,从 uri 中删除 MY_USER:MY_PASSWORD@,将 rs_name 更改为 replicaSet,每次尝试都不成功。 mongoose 似乎没有考虑 authSource 选项。
使用 mongojs,使用以下代码可以正常工作:
// connection string using mongojs:
var uri = 'mongodb://MY_USER:MY_PASSWORD@' +
'MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,' +
'MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,' +
'MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE';
var options = {
ssl: true,
authSource: 'MY_ADMIN_DATABASE',
replicaSet: 'MY_REPLICASET_NAME-shard-0'
};
var db = mongojs(uri,'', options);
但是,我需要使用猫鼬,因为我的项目中的 ODM。
如何使用 mongoose 构建我的 uri 和 options 变量?
【问题讨论】:
标签: node.js mongodb mongoose replicaset