1

我正在尝试连接到我的 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")

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

我得到的错误如下:

MongoError: authentication fail

知道这可能是什么吗?

4

1 回答 1

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);
于 2017-05-04T11:03:36.893 回答