1
votes

Mongoose ne connecte pas MongoDB Atlas

C'est la première fois que j'utilise MongoDB Atlas pour travailler avec Mongo, et en essayant de me connecter, c'est l'erreur que j'obtiens:

const express = require('express');
const mongoose = require('mongoose');

const app = express();

mongoose.connect('mongodb+srv://johnnybox:<password>@cluster0-cgxqx.mongodb.net/test?retryWrites=true&w=majority', { 
  useNewUrlParser: true
}).then(() => console.log('MongoDB Connected...'))
  .catch(err => console.log(err));

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.use(require('./routes'));

app.listen(3331);

Voici mon code:

XXX

ps * Mes identifiants ne me manquent pas

J'ai déjà cherché une solution ici mais il n'y a rien de similaire à mon problème.

Ma liste blanche:

 entrez la description de l'image ici


5 commentaires

Supprimez & w = majorité de la fin de la partie uri de mongoose.connect () . Si cela ne fonctionnait pas, apportez votre mongoose.connect () avant app.listen () et après tout app.use () . Faites-moi savoir si cela fonctionne cette fois.


rien n'a changé Matin, même en supprimant & w = majorité et en repositionnant ...: /


selon cette réponse , tout se résume à un problème IP à la fin (et je sais que vous avez essayé). Peut-être que vous utilisez un VPN ou un proxy qui le gêne. Ou peut-être est-ce votre FAI. Changez également la région de votre cluster en n'importe où aux États-Unis.


J'ai maintenant réalisé que vous pourriez mélanger votre propre nom d'utilisateur MongoDB avec l '"utilisateur de base de données" que vous avez créé. voir si vous utilisez l'utilisateur de base de données et le mot de passe que vous avez créés vous-même. Fais-moi savoir.


j'ai découvert le problème les gars


5 Réponses :


0
votes

essayez ceci

mongoose
  .connect(
    'mongodb+srv://{my_user}:{mypass}@johnnybox-cgxqx.mongodb.net/johnnybox?retryWrites=true&w=majority',
    { useNewUrlParser: true }
  )
  .then(() => console.log('MongoDB Connected...'))
  .catch(err => console.log(err));


6 commentaires

obtenu cette erreur Erreur: connectez ECONNREFUSED 3.214.209.13:27017 à TCPConnectWrap.afterConnect [comme oncomplete] (net.js: 1054: 14) {name: 'MongoNetworkError', errorLabels: ['TransientTransactionError'], [Symbol ( mongoErrorContextSymbol)]: {}}


quel est le nom de votre base de données?


c'est "johnnybox"


puis sur la connexion mangouste mongodb + srv: // {mon_utilisateur}: {mypass} @ johnnybox-cgxqx.mongodb.net‌ / johnnybox devrait suffire


utilisez-vous la boussole mongodb?


continuons cette discussion dans le chat .



0
votes

Essayez d'ajouter votre adresse IP dans la liste blanche IP de mongo atlas. Sinon, acceptez toutes les connexions si vous n'avez pas besoin d'une connexion sécurisée.


0 commentaires

0
votes

Une nouvelle réponse à la nouvelle erreur:

Selon ceci answer , qui avait exactement la même erreur, c'est-à-dire:

UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block

Ajoutez votre adresse IP actuelle à la liste blanche en suivant" clusters / security / whitelist " sur le site MongoDB.

Je suis désolé, j'ai passé au moins une heure à résoudre ce problème. C'est tout ce que je peux faire.


Ancienne réponse adressant l'ancienne erreur (il a corrigé cette partie, mais a quand même une nouvelle erreur):

Si vous lisez attentivement le journal des erreurs il dit:

'MongoNetworkError',
  errorLabels: [ 'TransientTransactionError' ],
  [Symbol(mongoErrorContextSymbol)]:

Cela signifie que vous deviez ajouter catch () à votre connexion mangouste:

mangouste .connect ({un certain code}). then ({un certain code}). catch (err => console.log (err))


3 commentaires

J'ai mis à jour ma question en utilisant comme Afrida l'a dit, mais l'erreur a changé


@ JoãoVitor Désolé, je n'ai pas lu sa réponse en essayant de résoudre votre problème.


c'est ok matin, ma question porte maintenant sur l'erreur mise à jour et le bloc catch également



0
votes

J'ai essayé d'exécuter ce code à la maison et cela fonctionnait parfaitement!

C'était donc quelque chose ici dans mon bureau, après quelques tests, le problème était avec le port de connexion qui était verrouillé.

Jetez un œil:

Error: connect ECONNREFUSED 3.209.60.172:27017

Notez qu'il se connecte au port 27017

** L'Ip est aléatoire, donc il change après chaque réquisition.

Après que mon SD ait ouvert ce port, tout fonctionnait correctement !!

 entrez la description de l'image ici

Merci beaucoup pour votre aide!


0 commentaires

0
votes

Pour ceux d'entre vous qui ont essayé différents URI, la seule chose qui a permis de le faire fonctionner ici est de vous ajouter une adresse IP et de permettre l'accès de n'importe où . J'espère que cela vous fera gagner du temps.


0 commentaires