sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongoose med ReplicaSet på Atlas

PÅ MONGODB 3.4.x

Jeg løste dette problem ved at sætte 'options'-værdien direkte i 'uri'-strengen ifølge dokumentationen (http://mongoosejs.com/docs/connections.html ) i afsnittet 'Replikasætforbindelser'.

// 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;

Nu fungerer det fint!

BEMÆRKNING MED MONGODB 3.6

På MongoDB Atlas, der bruger version 3.6.x, blev forbindelsesstrengen ændret til at bruge en DNS-server, hvilket gjorde linket kortere.

...hvis du bruger denne forbindelsesstreng i din applikation, vil denne forbindes med succes, men den vil kun være i stand til at læse og skrive med atlasbrugere med højere privilegier (atlasAdmin, readWriteAnyDatabase...).

For at du skal arbejde med en specifik bruger med privilegium til kun at læse og skrive din database, skal du beholde den samme forbindelsesstreng, der blev brugt i MongoDB 3.4, fordi mangusten ikke genkendte DNS-indstillingen (mongodb+srv).

P.S. alle de nye ressourcer fra MongoDB 3.6.x vil fortsætte med at fungere normalt!



  1. Brug blåfugl til mongoose, fik .bind er ikke en funktion

  2. Kører replikeret MongoDB 4.2 i Kubernetes:replset-konfiguration modtages ikke

  3. OpenSSL ikke fundet på MacOS Sierra

  4. Automatisk stigningssekvens i NestJs/Mongoose