Почему MongoDB не может подключиться к моему приложению NodeJS? - PullRequest
1 голос
/ 15 марта 2020

На 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 было взято со страницы github Traversy Media на узле Passport Login.

1 Ответ

0 голосов
/ 15 марта 2020

Указан неверный URL-адрес соединения mongodb, который в вашем случае является dbPassword. Если вы хотите подключиться к локальной базе данных mongodb, выполните следующие действия:

Запустите mongod в терминале и измените dbPassword на локальный URL, например,

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

, или вы можете используйте url непосредственно внутри приложения. js вот так

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

Если это не то, что вы хотите, и вы хотите сделать то, что сделал Брэд, то есть подключиться к облачной базе данных, вам нужно сначала сделать учетная запись в облаке mongodb, войдите в систему и создайте кластер, после чего вам нужно скопировать URL.

На мой взгляд, проще использовать локальный сервер mongodb. Облачные базы данных вам понадобятся только после того, как вы sh развернете свое приложение.

...