W MONGODB 3.4.x
Rozwiązałem ten problem, umieszczając wartość „options” bezpośrednio w ciągu „uri”, zgodnie z dokumentacją (http://mongoosejs.com/docs/connections.html ) w sekcji „Ustaw połączenia replik”.
// 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;
Teraz działa dobrze!
POWIADOMIENIE Z MONGODB 3.6
W MongoDB Atlas korzystającym z wersji 3.6.x parametry połączenia zostały zmienione tak, aby używały serwera DNS, skracając łącze.
...jeśli użyjesz tego ciągu połączenia w swojej aplikacji, połączy się to z powodzeniem, ale będzie mógł czytać i pisać tylko z użytkownikami atlasu z wyższymi uprawnieniami dostępu (atlasAdmin, readWriteAnyDatabase...).
Aby pracować z określonym użytkownikiem z uprawnieniami tylko do odczytu bazy danych, musisz zachować te same parametry połączenia, które są używane w MongoDB 3.4, ponieważ mangusta nie rozpoznała opcji DNS (mongodb+srv).
PS wszystkie nowe zasoby z MongoDB 3.6.x będą nadal działać normalnie!