将猫鼬连接到mongoDB Atlas和Node.js

时间:2018-10-09 19:57:53

标签: node.js mongodb mongoose

这是我的猫鼬连接代码:

mongoose.connect("mongodb+srv://Sarthak:*******:Wb@cluster0-jli2a.mongodb.net/test?retryWrites=true",{ useNewUrlParser: true })
    .then(()=>{
        console.log("Connected to mongo database");
    })
    .catch((err)=>{
        console.log("Error connecting mongo database",err);
    });

我收到以下错误,知道如何解决吗?

  

连接mongo数据库时出错{MongoParseError:权限部分中的转义冒号   在parseConnectionString(/home/sarthak/Projects/thePracticalGuide/node_modules/mongodb-core/lib/uri_parser.js:250:23)   在QueryReqWrap.dns.resolveTxt [作为回调](/home/sarthak/Projects/thePracticalGuide/node_modules/mongodb-core/lib/uri_parser.js:126:7)   在QueryReqWrap.onresolve [完成时](dns.js:240:10)   名称:“ MongoParseError”,   [Symbol(mongoErrorContextSymbol)]:{}}

documentation

6 个答案:

答案 0 :(得分:0)

错误描述非常清楚-密码中是否包含冒号?典型的连接字符串格式为“ mongodb + srv:[用户名:密码@] host1 ...”,因此未转义的冒号将引发解析错误。

答案 1 :(得分:0)

我也遇到了同样的问题,即使“逃脱的冒号”已经很明显地逃脱了。试试这个:

var uri = encodeURI('mongodb+srv://Sarthak:*******:Wb@cluster0-jli2a.mongodb.net/test?retryWrites=true');

答案 2 :(得分:0)

也尝试使用这种连接方式

 /* I've removed the ":Wb" between your password and @clus... As mongoDB atlas website didn't use that in my generated connection string */
  mongoose.connect("mongodb+srv://Sarthak:*******@cluster0-jli2a.mongodb.net/test?retryWrites=true",{ useNewUrlParser: true });    

  mongoose.connection.on('error', (err) => {
    console.error(`Mongoose connection error: ${err}`);
    process.exit(1);
  });

要考虑的其他事项:

  • 确保已将连接设备的IP地址添加到mongoDB atlas网站中群集安全性分接头的IP白名单中(如果已经完成,则可以尝试通过添加0.0来授予每个IP许可)。 0.0 / 0来检查与此是否相关)
  • 关于密码,您可能会对mongoDB atlas登录密码感到困惑,而不是为群集创建的用户(这是mongoDB atlas新手经常犯的错误)。
  • 如果没有,并且您使用的是正确的密码,则可以尝试删除用户,然后在“安全性”选项卡(在mongoDB atlas网站的群集视图中)中重新创建该用户。首先考虑为用户提供一个非常基本的密码,不带任何特殊字符,然后尝试再次连接以确保它不是编码问题。
  • 最后,如果以上都不起作用,请尝试通过外壳建立连接。 (您可以在mongoDB atlas网站的群集连接部分中看到连接字符串。在那里,您可以获得有关问题原因的更好日志。

答案 3 :(得分:0)

只需转到Atlas网站安全选项卡并编辑用户密码,并确保您不使用“ @”或“:”。而已。

答案 4 :(得分:0)

您需要在连接字符串中编码密码:

const connectionString = `mongodb://yourUsername:${encodeURIComponent('yourPassword')}@127.0.0.1:27017/mydb`;

答案 5 :(得分:0)

我在输入连接字符串时使用 MongoDB Compass 得到“授权部分未转义的冒号”

对于 -

我进入“创建免费集群”按钮并创建了一个集群。

然后我得到了连接字符串。但是,在输入可用的连接字符串时出现错误。

我刚刚通过登录 mongodb atlas 更改了密码。

这是我使用的程序 -->

 [1]  To change the password - click on encode URI

enter image description here

 [2]   It will take you here -->

enter image description here

  [3]   Click on the edit button from the screen above and change your password.

enter image description here

我按照上述步骤操作,并且能够登录。