MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mangouste avec ReplicaSet sur Atlas

SUR MONGODB 3.4.x

J'ai résolu ce problème en mettant la valeur 'options' directement dans la chaîne 'uri', selon la documentation (http://mongoosejs.com/docs/connections.html ) dans la section "Connexions des jeux de réplicas".

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

Maintenant, ça marche bien !

AVIS AVEC MOGODB 3.6

Sur MongoDB Atlas utilisant la version 3.6.x, la chaîne de connexion a changé pour utiliser un serveur DNS rendant le lien plus court.

...si vous utilisez cette chaîne de connexion dans votre application, celle-ci se connectera avec succès mais elle ne pourra lire et écrire qu'avec les utilisateurs de l'atlas disposant d'un accès privilégié (atlasAdmin, readWriteAnyDatabase...).

Pour que vous travailliez avec un utilisateur spécifique avec le privilège uniquement de lireEcrire votre base de données, vous devrez conserver la même chaîne de connexion utilisée dans MongoDB 3.4 car la mangouste n'a pas reconnu l'option DNS (mongodb+srv).

PS toutes les nouvelles ressources de MongoDB 3.6.x continueront de fonctionner normalement !