为什么MongoDB无法连接到我的NodeJS应用程序?

时间:2020-03-15 14:31:19

标签: node.js database mongodb localhost database-connection

在nodejs服务器中,mongodb未连接。终端上显示的错误代码

[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
Server started on port 5000
MongoParseError: URI does not have hostname, domain name and tld
    at parseSrvConnectionString (/home/psayeed1990/programming/node/node_passport_login-master/node_modules/mongodb/lib/core/uri_parser.js:41:21)
    at parseConnectionString (/home/psayeed1990/programming/node/node_passport_login-master/node_modules/mongodb/lib/core/uri_parser.js:516:12)
    at connect (/home/psayeed1990/programming/node/node_passport_login-master/node_modules/mongodb/lib/operations/connect.js:266:3)
    at ConnectOperation.execute (/home/psayeed1990/programming/node/node_passport_login-master/node_modules/mongodb/lib/operations/connect.js:191:5)
    at executeOperation (/home/psayeed1990/programming/node/node_passport_login-master/node_modules/mongodb/lib/operations/execute_operation.js:83:26)
    at MongoClient.connect (/home/psayeed1990/programming/node/node_passport_login-master/node_modules/mongodb/lib/mongo_client.js:216:10)
    at /home/psayeed1990/programming/node/node_passport_login-master/node_modules/mongoose/lib/connection.js:632:12
    at new Promise (<anonymous>)
    at NativeConnection.Connection.openUri (/home/psayeed1990/programming/node/node_passport_login-master/node_modules/mongoose/lib/connection.js:629:19)
    at Mongoose.connect (/home/psayeed1990/programming/node/node_passport_login-master/node_modules/mongoose/lib/index.js:328:15)
    at Object.<anonymous> (/home/psayeed1990/programming/node/node_passport_login-master/app.js:18:4)
    at Module._compile (internal/modules/cjs/loader.js:1128:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:10)
    at Module.load (internal/modules/cjs/loader.js:983:32)
    at Function.Module._load (internal/modules/cjs/loader.js:891:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12) {
  name: 'MongoParseError',
  [Symbol(mongoErrorContextSymbol)]: {}

这是要连接的代码

dbPassword = 'mongodb+srv://sayeed:'+ encodeURIComponent('123456') + 'mongodb://localhost:27017/node-passport-login';

module.exports = {
    mongoURI: dbPassword
};

完整的nodejs应用程序来自Traversy Media的github页面“节点护照登录”。

3 个答案:

答案 0 :(得分:1)

我也遇到了这个问题,我使用自动生成的密码更新了密码, 它对我有用。

EXAMPLE

If your password in plain-text is p@ssw0rd'9'!, you would need to encode your password as:

p%40ssw0rd%279%27%21

https://docs.atlas.mongodb.com/troubleshoot-connection/#special-characters-in-connection-string-password

答案 1 :(得分:0)

您提供的mongodb连接URL不正确,在您的情况下为dbPassword。 如果要连接到本地托管的mongodb数据库,请执行以下操作。

在终端中启动mongod,然后将dbPassword更改为本地网址

dbPassword="mongodb://localhost:27017/dbName"

或者您可以像这样直接在app.js内部使用网址

mongoose.connect("mongodb://localhost:27017/dbName")

如果这不是您想要的,并且想做Brad要做的就是连接到云数据库,则需要首先在mongodb cloud上注册一个帐户,登录并创建一个集群,之后您需要复制该集群。网址。

我认为使用本地mongodb服务器更容易。 一旦您希望部署应用程序,就只需要云数据库。

答案 2 :(得分:0)

就我而言,我在密码字符串的末尾有“*”和“#”。我也不想使用自动生成的密码。

之前:

password*#

之后:

password%2A%23

您可以使用在线工具对您的密码进行 url 编码

https://www.url-encode-decode.com/