在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页面“节点护照登录”。
答案 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
答案 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 编码