it-swarm.com.de

Unbeaufsichtigte Ablehnung des Versprechens: Fehler: URL ist fehlerhaft und kann nicht analysiert werden

Ich bin zur gleichen Zeit neu bei aws und mongodb, also stehe ich an einem sehr grundlegenden Punkt, wenn ich versuche, eine Verbindung zu meiner Mongo-Datenbank herzustellen, die auf einer Amazon linux ec2-Instanz gehostet wird. Der Grund ist, dass ich den Pfad zu meiner Datenbank nicht erstellen kann.

Folgendes versuche ich zu verwenden: mongoose.connect('mongod://[email protected]:27017/test' ).

Und hier ist das Ergebnis meiner Test-Lambda-Funktion: UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: URL malformed, cannot be parsed

Ich verwende mongodb 3.6.5.

3
Jean-Baptiste

Mongoose 5.x unterstützt folgende Syntax für die Autorisierung, und stellen Sie sicher, dass Sie kein Sonderzeichen in URL wie @,-,+,> verwendet haben.

mongoose.connect(MONGO_URL, {
  auth: {
    user: MONGO_DB_USER,
    password: MONGO_DB_PASSWORD
  }
})

Oder, wenn Sie die Warnung zur Deprication entfernen möchten Vermeiden Sie, dass der aktuelle Parser für URL-Zeichenketten nicht mehr verwendet wird "

Option useNewUrlParser hinzufügen

mongoose.connect(MONGO_URL, {
  auth: {
    user: MONGO_DB_USER,
    password: MONGO_DB_PASSWORD
  },
  { useNewUrlParser: true }
})
11
Anthony Winzlet

Mein Problem war ein einfacheres URI-Problem. Da war ein @-Zeichen in der Mongod-Adresse.

Ich musste das verwenden:

return mongoose.connect(encodeURI(process.env.DB_CONNECT)
2
Jean-Baptiste

Wenn Sie den folgenden URI in Ihrer Umgebungsdatei verwendet haben, zum Beispiel MongoDB://<dbuser>:<dbpassword>@ds055915.mlab.com:55915/fullstack-vue-graphql Stellen Sie sicher, dass Ihr Kennwort inMONGOD_URI kein Sonderzeichen wie @ enthält. Ich hatte @ als Teil meines Passwortzeichens verwendet und erhielt den Fehler. Nachdem ich Sonderzeichen aus meinem DB Password entfernt hatte, funktionierten alle wie erwartet.

2
Bryan Kimani

In meinem Fall hat das unten gut funktioniert.

In db.js

const mongoose = require('mongoose');
const MONGODB_URI = "mongodb://Host-name:27017/db-name?authSource=admin";
const MONGODB_USER = "mongouser";
const MONGODB_PASS = "myasri*$atIP38:nG*#o";

const authData =  {
    "user": MONGODB_USER,
    "pass": MONGODB_PASS,
    "useNewUrlParser": true,
    "useCreateIndex": true
}; 
mongoose.connect(
    MONGODB_URI, 
    authData,
    (err) => {
        if (!err) { console.log('MongoDB connection succeeded.'); }
        else { console.log('Error in MongoDB connection : ' + JSON.stringify(err, undefined, 2)); }
    }
);

Hinweis: 

Meine Node-Version ist 10.x 

MongoDb-Server-Version ist 3.6.3

mungo-Version ist ^ 5.1.2

0
Ipsita Rout

Ich möchte nur die Antwort von @ anthony-winzlet aktualisieren, da ich den gleichen Fehler habe und mit diesem Code lösen muss. 

mongoose.connect(url, {
  auth: {
    user:'usrkoperasi',
    password:'password'
  },
  useNewUrlParser:true
}, function(err, client) {
  if (err) {
    console.log(err);
  }
  console.log('connect!!!');
});

Ich füge einfach Callback und useNewUrlParser:true hinzu. Ich benutze "mongoose": "^5.2.7",.

Viel Spaß beim Codieren!

0
Sukma Saputra