来自Node.JS的MongoDB Atlas授权失败

时间:2017-05-04 10:38:11

标签: node.js mongodb mongodb-replica-set mongodb-atlas

我正在尝试连接到我的mongoDB atlas集群,但是验证失败了。 我能够从Studio 3T和Mongo shell等客户端进行连接。

这是我的连接URI:

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")

我从atlas控制台复制了这个。 我正在使用Mongoose 4.9.7,它使用MongoDB 2.2.26,所以我使用的是这些模块的最新版本。

我得到的错误如下:

MongoError: authentication fail

知道这可能是什么吗?

1 个答案:

答案 0 :(得分:3)

找到解决方案。我的密码有特殊字符,所以我必须正确编码。将实施更改为

var f = require('util').format;    
var user = encodeURIComponent('user');
var password = encodeURIComponent('p@ssw0rdWithSpecialCharacter');
var url = f("mongodb://%s:%s@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=xxx-shard-0&authSource=admin",user,password);
var conn = mongoose.connect(url);