Mongoose Verbindung der Ereignisse mit createConnection
Zog ich Sie Weg von der Nutzung der Standard-Verbindung zu einem explizit definierten Verbindung.
Mein code funktioniert, außer, dass keines der event-Handler, welche Spur der Zustand meiner mongo Verbindung feuern.
die Ereignisse verwendet, um Feuer, wenn ich mit Standard-Mungo-Verbindung. (Mungo.verbinden).
var mongoose = require('mongoose'),
logger = require('../logger'),
config = require('../config');
mongoose.connection.on('connecting', function(){
logger.info("trying to establish a connection to mongo");
});
mongoose.connection.on('connected', function() {
logger.info("connection established successfully");
});
mongoose.connection.on('error', function(err) {
logger.error('connection to mongo failed ' + err);
});
mongoose.connection.on('disconnected', function() {
logger.log('mongo db connection closed');
})
var gracefulExit = function() {
db.close(function(){
logger.log("mongoose connection with db " + server + 'is closing');
process.exit(0);
});
};
process.on('SIGNT', gracefulExit).on('SIGTERM', gracefulExit);
var db = mongoose.createConnection(config.get('DB_URL'));
module.exports = db;
das problem mit dem code ist
- Keiner der event-Handler werden brennen.
- Auch die Prozess-Ereignisse auf SIGNT und SIGTERM sind nicht feuern.
Ich habe auch versucht
var db = mongoose.createConnection(config.get('DB_URL'));
db.on('connecting', function(){
logger.info("trying to establish a connection to mongo");
});
aber auch nicht ausgelöst.
- Haben Sie versucht, mit
mongoose.connect
stattmongoose.createConnection
? - Ich möchte nicht monoose.verbinden Sie denn mit einer "Standard" - Verbindung scheint wie eine schlechte Praxis zu mir. Ich möchte mit einem explizit definierten Verbindung eher als Standard-Verbindung.
- OK, aber das ist eher gängige Praxis als alles andere.
- Ihren zweiten Versuch mit
db.on
arbeitete für mich mit der 'open', 'verbunden' und 'getrennt' - Ereignisse. - Ha.. .ja, es war nicht die Arbeit für den Anschluss.. aber arbeitete verbunden. aber warum ist meine close-Methode nicht aufgerufen wird, für die Prozess exit-Ereignis?
- Ich weiß, dies ist ein Alter thread, aber ich denke, der Grund, warum die close-Methode nicht feuern, weil 'SIGNT' sollte 'SIGINT'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diesem snippet Schlag funktionieren für mich
versuchen:
auch temporär entfernen .close () -
Ich stolperte über dieses Problem mich und fand, dass ich brauchte, um die
EventListeners
bevor die eigentliche Verbindung zur Datenbank so (mit async/await):Sollten auch diese funktionieren auf die gleiche Weise mit
mongoose.createConnections
.Diese Ausbeute wird das Ergebnis (wenn erfolgreich):
Wollte ich nur chip und meine Lösung für das problem zur hand und geben eine vollständige Beispiel-Implementierung des Codes, wie die obigen Antworten nicht erklären, in welcher Reihenfolge Sie benötigt, um zu hören, für die Veranstaltungen. Wenn Sie waren, um die
mongoose.connection.on()
unterhalb derawait.mongoose.connect()
würde, würde dies nicht die Ausbeute der Reaktion aus derEventListeners
.Edit: Tippfehler