3

在 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 页面 Node Passport Login。

4

3 回答 3

2

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

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

于 2020-08-21T07:08:40.087 回答
0

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

前:

password*#

后:

password%2A%23

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

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

于 2021-06-12T12:45:48.690 回答
0

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

在终端中启动 mongod 并将 dbPassword 更改为本地 url,如下所示

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

或者您可以像这样直接在 app.js 中使用 url

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

如果这不是您想要的,并且您想做 Brad 所做的事情,即连接到云数据库,您需要首先在 mongodb 云上创建一个帐户,登录然后创建一个集群,然后您需要复制 URL。

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

于 2020-03-15T14:46:50.577 回答