TRÊN MONGODB 3.4.x
Tôi đã giải quyết vấn đề này bằng cách đặt giá trị 'options' trực tiếp vào chuỗi 'uri', theo tài liệu ( http://mongoosejs.com/docs/connections.html ) trên phần 'Replica Set Connections'.
// 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' +
'ssl=true&replicaSet=MY_REPLICASET_NAME-shard-0&authSource=MY_ADMIN_DATABASE';
mongoose.connect(uri);
var db = mongoose.connection;
Bây giờ, nó đang hoạt động tốt!
THÔNG BÁO VỚI MONGODB 3.6
Trên MongoDB Atlas sử dụng phiên bản 3.6.x, chuỗi kết nối đã thay đổi để sử dụng máy chủ DNS làm cho liên kết ngắn hơn.
... nếu bạn sử dụng chuỗi kết nối này trong ứng dụng của mình, điều này sẽ kết nối thành công nhưng nó sẽ chỉ có thể đọc và ghi với những người dùng atlas có quyền truy cập đặc quyền cao hơn (atlasAdmin, readWriteAnyDatabase ...).
Để bạn làm việc với một người dùng cụ thể với đặc quyền chỉ đọc Ghi cơ sở dữ liệu của mình, bạn sẽ cần giữ cùng một chuỗi kết nối được sử dụng trong MongoDB 3.4 vì mongoose không nhận dạng được tùy chọn DNS (mongodb + srv).
P.S. tất cả các tài nguyên mới từ MongoDB 3.6.x sẽ tiếp tục hoạt động bình thường!