node.js - Node.JS 对 MongoDB Atlas 授权失败

标签 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

知道这可能是什么吗?

最佳答案

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

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

关于node.js - Node.JS 对 MongoDB Atlas 授权失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43780561/

相关文章:

javascript - 运行 gulp 任务时 Gulp-livereload 错误

node.js - 如何验证 JWT 是否仍然有效?

mongodb - 无法启动 com.bitnami.mongodb

swift - 如何将vapor连接到mongodb atlas

javascript - 如何排除特定版本的 npm 包?

node.js - 使用 ldap.js 的 Active Directory 身份验证

javascript - Mongoose - 检测重复字段

mongodb - 我可以使用 golang (mgo) 在一个查询中聚合两个 mongodb 查询吗?

mongodb - 使用 Pig 从 Mongo 读取未命名的字符串数组

mongodb - 为什么不在configdb中使用仲裁器?