【问题标题】:connecting mongoose to mongoDB atlas and nodejs将 mongoose 连接到 mongoDB atlas 和 nodejs
【发布时间】:2019-03-14 16:05:23
【问题描述】:

这是我的猫鼬连接代码:

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: Unescaped Colon in authority section 在 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 [as oncomplete] (dns.js:240:10) 名称:'MongoParseError', [符号(mongoErrorContextSymbol)]:{}}

【问题讨论】:

标签: node.js mongodb mongoose


【解决方案1】:

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

【讨论】:

  • 考虑为您建议的信息添加一个来源,并解释为什么它与问题中提供的内容相关。
【解决方案2】:

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

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

【讨论】:

【解决方案3】:

也尝试使用这种连接方式

 /* 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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 0.0/0 来检查这方面没有问题)
  • 关于密码,您可能对 mongoDB atlas 登录密码感到困惑,而不是您为集群设置的用户(这是 mongoDB atlas 新手常犯的错误)。
  • 如果不是并且您使用了正确的密码,您可以尝试删除用户并在安全选项卡中重新创建它(在 mongoDB atlas 网站的集群视图中)。首先考虑为用户提供一个没有任何特殊字符的非常基本的密码,然后再次尝试连接以确保它不是编码问题。
  • 最后,如果以上方法都不能与您一起工作,请尝试通过 shell 建立连接。 (您可以在 mongoDB atlas 网站的集群的连接部分中查看连接字符串。在那里您可以获得关于问题原因的更好日志。

【讨论】:

    【解决方案4】:

    错误描述非常清楚 - 您的密码中有冒号吗?典型的连接字符串格式是“mongodb+srv:[username:password@]host1...”,因此未转义的冒号会引发解析错误。

    【讨论】:

    • 不,我的密码里只有一个下划线。
    • 两个建议1) '@' 前面的任何内容都是您的密码 - 删除 ':Wb' 2) 在选项中指定数据库名称。例如。 mongoose.connect('"mongodb+srv://Sarthak:*******@cluster0-jli2a.mongodb.net/',{dbName: 'test'})
    【解决方案5】:

    我遇到了同样的问题,“未转义的冒号”也是如此,即使它们很明显被转义了。试试这个:

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

    【讨论】:

      【解决方案6】:

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

      为了哪个-

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

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

      我刚刚登录mongodb atlas修改了密码。

      这是我使用的过程-->

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

       [2]   It will take you here -->
      

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

      我按照上述步骤进行了登录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-25
        • 2019-03-06
        • 2020-09-13
        • 2019-10-23
        • 1970-01-01
        • 2021-08-29
        • 2020-02-22
        相关资源
        最近更新 更多