Tôi có một bản sao thiết lập trên MongoDB Atlas và đây là chuỗi kết nối Mongo vỏ của tôi mà kết nối hoàn hảo:Mongoose với ReplicaSet trên Atlas
$ 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
Làm thế nào tôi có thể chuyển đổi nó để sử dụng trong mongoose? Làm thế nào tôi có thể xây dựng biến uri và tùy chọn của tôi?
Tôi đã thử các sau đây mà không thành công:
// connection string using mongoose:
var uri = 'mongodb://MY_USER:[email protected]' +
'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;
Tôi đã cố gắng bao gồm cả người sử dụng: và pass: về các lựa chọn, loại bỏ my_user: MY_PASSWORD @ từ uri, thay đổi rs_name để replicaSet, mọi cố gắng không thành công. Dường như mongoose không xem xét tùy chọn authSource.
Sử dụng mongojs, nó hoạt động tốt với đoạn mã sau:
// connection string using mongojs:
var uri = 'mongodb://MY_USER:[email protected]' +
'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);
Nhưng, tôi cần phải sử dụng mongoose vì ODM trong dự án của tôi.
Làm cách nào tôi có thể tạo biến uri và biến tùy chọn bằng cách sử dụng mongoose?
phiên bản của mongoose nơi bạn sử dụng? –
"mongoose": "^ 4.10.8" @AdeelImran Imran –