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.
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 }
})
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)
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.
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
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!