3 votes

Pourquoi MongoDB ne peut-il pas se connecter à mon application NodeJS ?

Dans le serveur nodejs, mongodb ne se connecte pas. Le code d'erreur sur le terminal montre

[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)]: {}

Voici le code pour se connecter

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

module.exports = {
    mongoURI: dbPassword
};

L'application nodejs complète est tirée de la page github de Traversy Media, Node Passport Login.

2voto

Justin J Points 574

J'ai également rencontré ce problème, j'ai mis à jour mon mot de passe en utilisant le mot de passe autogénéré, Cela a fonctionné pour moi.

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

1voto

Vivek p.a Points 23

L'url de connexion à mongodb que vous avez fournie est incorrecte. Dans votre cas, il s'agit du mot de passe de la base de données (dbPassword). Si vous souhaitez vous connecter à une base de données mongodb hébergée localement, procédez comme suit.

Lancez mongod dans un terminal et changez le dbPassword par l'url locale comme ceci

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

ou vous pouvez utiliser l'url directement dans app.js comme ceci

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

Si ce n'est pas ce que vous voulez et que vous voulez faire ce que Brad a fait, c'est-à-dire vous connecter à une base de données en nuage, vous devez d'abord créer un compte sur mongodb cloud, vous connecter et ensuite créer un cluster, après quoi vous devez copier l'URL.

Il est plus facile d'utiliser le serveur mongodb local à mon avis. Vous n'avez besoin de bases de données en nuage qu'une fois que vous souhaitez déployer votre application.

0voto

Anil Singh Points 1914

Dans mon cas, j'avais "*" et "#" à la fin de la chaîne du mot de passe. Je ne voulais pas non plus utiliser un mot de passe généré automatiquement.

Avant :

password*#

Après :

password%2A%23

Vous pouvez utiliser un outil en ligne pour encoder votre mot de passe.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X