Wie kann ich einen Rückruf für die Fehlerbehandlung festlegen, wenn Mungo keine Verbindung zu meiner Datenbank herstellen kann?
Ich weiß von
connection.on('open', function () { ... });
aber gibt es so etwas
connection.on('error', function (err) { ... });
?
javascript
mongodb
node.js
mongoose
pkyeck
quelle
quelle
connection.on('error', function (err) { ... });
ist jetzt in 3.X implementiert.Antworten:
Wenn Sie eine Verbindung herstellen, können Sie den Fehler im Rückruf feststellen:
mongoose.connect('mongodb://localhost/dbname', function(err) { if (err) throw err; });
quelle
Es gibt viele Mungo-Rückrufe, die Sie verwenden können.
// CONNECTION EVENTS // When successfully connected mongoose.connection.on('connected', function () { console.log('Mongoose default connection open to ' + dbURI); }); // If the connection throws an error mongoose.connection.on('error',function (err) { console.log('Mongoose default connection error: ' + err); }); // When the connection is disconnected mongoose.connection.on('disconnected', function () { console.log('Mongoose default connection disconnected'); }); // If the Node process ends, close the Mongoose connection process.on('SIGINT', function() { mongoose.connection.close(function () { console.log('Mongoose default connection disconnected through app termination'); process.exit(0); }); });
mehr unter: http://theholmesoffice.com/mongoose-connection-best-practice/
quelle
In diesem Fall funktioniert die Version von Mongoose, die ich ausführe (3.4), wie in der Frage angegeben. Das Folgende kann also einen Fehler zurückgeben.
connection.on('error', function (err) { ... });
quelle
Wie wir in der Mungo-Dokumentation zur Fehlerbehandlung sehen können , ist das Versprechen die Option, die mit einer Mungo-Verbindung verwendet werden kann , da die connect () -Methode ein Versprechen zurückgibt
catch
.Um anfängliche Verbindungsfehler zu behandeln, sollten Sie
.catch()
odertry/catch
mit verwendenasync/await
.Auf diese Weise haben wir zwei Möglichkeiten:
Mit der
.catch()
Methode:mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true }) .catch(error => console.error(error));
oder mit try / catch:
try { await mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true }); } catch (error) { console.error(error); }
IMHO, ich denke, dass die Verwendung
catch
eine sauberere Art ist.quelle
UnhandledPromiseRejectionWarning: ReferenceError: handleError is not defined
catch()
- danke für die KlarstellungSpäte Antwort, aber wenn Sie den Server am Laufen halten möchten, können Sie Folgendes verwenden:
mongoose.connect('mongodb://localhost/dbname',function(err) { if (err) return console.error(err); });
quelle
mongoose.connect( "mongodb://..." ).catch((e) => { console.log("error connecting to mongoose!"); }); mongoose.connection.on("error", (e) => { console.log("mongo connect error!"); }); mongoose.connection.on("connected", () => { console.log("connected to mongo"); });
quelle