首页 文章

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

提问于
浏览
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")

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

我得到的错误如下:

MongoError: authentication fail

知道这可能是什么?

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

相关问题