J'essaie de me connecter à une base de données MongoDB avec un nom d'utilisateur et un mot de passe en utilisant Mongoose dans Node.js. Tous les documents indiquent que la chaîne de connexion doit ressembler à ceci
mongodb://username:password@host:port/db
Cependant, le mot de passe contient le caractère '@'. Comment puis-je en faire une chaîne de connexion que la mangouste pourra comprendre ? Puis-je échapper le caractère '@' du mot de passe ou dois-je utiliser une autre méthode de connexion ?
0 votes
L'avez-vous essayé ? Peut-être qu'il utilise le dernier @ qu'il trouve.
1 votes
Non, ça ne marche pas. Les coder en %40 ne fonctionne pas non plus.
4 votes
Je vous recommande de changer le mot de passe pour un qui n'inclut pas le caractère @.
0 votes
Oui, cela pourrait fonctionner mais j'aimerais voir une vraie solution.
1 votes
L'échappement avec une barre oblique fonctionne-t-il ? "\@" ?
0 votes
Non, cela génère une erreur de caractère illégal.
0 votes
@SylvainDefresne Il n'y aura pas de caractère '@' dans le mot de passe. C'est le format de structuration de l'URL pour connecter MongoDB en utilisant Mongoose Connection object Veuillez consulter ce lien : mongoosejs.com/docs/connexions.html
1 votes
@AmolMKulkarni : Je sais que c'est le format que la mangouste utilise pour spécifier la connexion. Mais l'OP voulait savoir comment il pouvait utiliser un mot de passe contenant un '@' ? C'est un mot de passe comme "p@ssw0rd" (qui est un mot de passe boiteux). L'url serait "monbgodb://nomd'utilisateur:p@ssw0rd@host:port/db" qui est mal interprété par la mangouste (c'est-à-dire qu'il se sépare au premier @ au lieu du dernier).
0 votes
@SylvainDefresne : Merci pour la mise à jour de votre côté. C'est correct L'url serait "monbgodb://username:p@ssw0rd@host:port/db".
0 votes
J'ai été mal compris par une mauvaise réponse ici, qui a déjà été déclassée.
2 votes
Le personnage
@
dans votre mot de passe doivent être encodés dans l'URL. L'encodage@
le caractère est%40
. Cependant, le%
doivent également être encodés. Donc, si votre mot de passe est, disons,p@ss
le mot de passe final codé devrait êtrep%2540ss
0 votes
{ useNewUrlParser : true } a fait l'affaire pour moi.