未处理的承诺拒绝:错误:网址格式错误,无法解析

Jea*_*ste 5 amazon-ec2 mongoose mongodb

我同时也是aws和mongodb的新手,所以我在一个非常基本的方面试图连接到我的mongo数据库,托管在亚马逊linux ec2实例上.原因是,我无法构建数据库的路径.

这是我正在尝试使用的:mongoose.connect('mongod://ec2-user@ec2-XX-XX-XXX-XXX-XX.compute-1.amazonaws.com:27017/test' ).

这是我的测试lambda函数的结果: UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: URL malformed, cannot be parsed

我正在使用mongodb 3.6.5.

Ash*_*shh 18

Mongoose 5.x支持以下授权语法,并确保您没有在url中使用任何特殊字符@,-,+,>

mongoose.connect(MONGO_URL, {
  auth: {
    user: MONGO_DB_USER,
    password: MONGO_DB_PASSWORD
  }
})
Run Code Online (Sandbox Code Playgroud)

或者,如果要删除deprication警告避免"当前URL字符串解析器已弃用"

添加选项 useNewUrlParser

mongoose.connect(MONGO_URL, {
  auth: {
    user: MONGO_DB_USER,
    password: MONGO_DB_PASSWORD
  },
  { useNewUrlParser: true }
})
Run Code Online (Sandbox Code Playgroud)

  • 对于我来说,使用 Mongoose 5.6.11,只需删除密码字符串中的特殊字符(即“+”和“?”) (2认同)

Jea*_*ste 8

我的问题是一个更简单的 URI 问题。由于@mongod地址中有一个字符。

我不得不使用这个:

return mongoose.connect(encodeURI(process.env.DB_CONNECT)); //added ');'
Run Code Online (Sandbox Code Playgroud)