2017-05-04 1 views
1

J'essaie de me connecter à mon cluster mongoDB atlas mais l'authentification échoue. Je suis capable de me connecter depuis un client comme Studio 3T et depuis le shell Mongo.L'autorisation échoue à MongoDB Atlas à partir de Node.JS

Voici mon URI de connexion:

var conn = mongoose.connect("mongodb://<user>:<password>@xxx-shard-00-00-kqmqb.mongodb.net:27017,xxx-shard-00-01-kqmqb.mongodb.net:27017,xxx-shard-00-02-kqmqb.mongodb.net:27017/myDB?ssl=true&replicaSet=xxxCluster-shard-0&authSource=admin") 

Je copié ce à partir de la console d'atlas. J'utilise Mongoose 4.9.7 qui utilise MongoDB 2.2.26 donc j'utilise les dernières versions de ces modules.

L'erreur que je reçois est la suivante:

MongoError: authentication fail 

Toute idée de ce que cela pourrait être?

Répondre

3

Trouvé la solution. Mon mot de passe contient des caractères spéciaux, je dois donc l'encoder correctement. Changement de l'implémentation à

var f = require('util').format;  
var user = encodeURIComponent('user'); 
var password = encodeURIComponent('[email protected]'); 
var url = f("mongodb://%s:%[email protected]:27017,xxx-shard-00-01-kqmqb.mongodb.net:27017,xxx-shard-00-02-kqmqb.mongodb.net:27017/myDB?ssl=true&replicaSet=xxx-shard-0&authSource=admin",user,password); 
var conn = mongoose.connect(url);