НА MONGODB 3.4.x
Разреших този проблем, като поставих стойността 'options' директно в низ 'uri', според документацията (http://mongoosejs.com/docs/connections.html ) в раздела „Връзки на комплект реплики“.
// 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;
Сега работи добре!
ЗАБЕЛЕЖКА С MONGODB 3.6
В MongoDB Atlas, използвайки версия 3.6.x, низът за връзка се промени, за да използва DNS сървър, което прави връзката по-къса.
...ако използвате този низ за свързване във вашето приложение, това ще се свърже успешно, но ще може да чете и пише само с потребители на atlas с по-високи привилегии за достъп (atlasAdmin, readWriteAnyDatabase...).
За да работите с конкретен потребител с привилегия само да чете и записва вашата база данни, ще трябва да запазите същия низ за връзка, използван в MongoDB 3.4, тъй като mongoose не разпозна DNS опцията (mongodb+srv).
P.S. всички нови ресурси от MongoDB 3.6.x ще продължат да работят нормално!