Ich habe eine Nodejs App, die einige mongodb Datenbankmigration macht.MongoDB-Verbindung schließt nicht immer nach connection.close()
von Alles beginnt mit
MongoClient.connect(`mongodb://${databaseHostname}:${databasePort}/${options.databaseName}`,
(connectionError, dbConnection) => {
if (connectionError) {
return cb(connectionError);
}
console.log('Opened connection to', databaseHostname, options.databaseName);
return cb(null, dbConnection);
});
und endet mit
console.log('Close');
dbConnection.close((err) => {
if (err) console.log(err);
console.log('Closed');
});
Dazwischen gibt es eine ganze Menge passiert, neue Kollektionen erstellt, Dokumente neu angeordnet etc. Aber nie eine neue Verbindung geöffnet. Die Ausgabe der App ist:
Opened connection to localhost testDatabase
[Viele andere Protokolle hier]
Close
Closed
Die Datenbankprotokolle sind
2016-07-18T16:54:29.400+0200 I NETWORK [initandlisten] connection accepted from 127.0.0.1:54336 #848 (1 connection now open)
2016-07-18T16:54:29.423+0200 I NETWORK [initandlisten] connection accepted from 127.0.0.1:54337 #849 (2 connections now open)
2016-07-18T16:54:29.426+0200 I NETWORK [initandlisten] connection accepted from 127.0.0.1:54338 #850 (3 connections now open)
[Viel Einfügungen und Updates hier]
2016-07-18T16:58:06.493+0200 I NETWORK [conn849] end connection 127.0.0.1:54337 (2 connections now open)
2016-07-18T16:58:06.494+0200 I NETWORK [conn850] end connection 127.0.0.1:54338 (1 connection now open)
Wie Sie sehen können, ein Mongodb Die Verbindung bleibt geöffnet, obwohl dbConnection.close() aufgerufen wurde, um zu verhindern, dass die nodejs-Anwendung beendet wird. Ich schaue mir das schon eine ganze Weile an, aber verstehe nicht, was dieses Verhalten verursachen könnte?
Hey, ich glaube, Sie das Problem nicht verstehen. Ich möchte meine Verbindung nicht sofort schließen, da ich alle Datenbankmigrationen dazwischen mache. Und Sie sollten die Datenbankverbindung schließen, wenn Sie möchten, dass Ihr Programm ordnungsgemäß beendet wird, da es ansonsten einfach geöffnet bleibt. Sie beziehen sich darauf, dass Sie die Verbindung nicht schließen sollten, wenn Sie sie erneut verwenden möchten, z. zwischen Abfragen. – Philiiiiiipp
Oh ich sehe, vielleicht sollten Sie versuchen https://github.com/mongodb/node-mongodb-native. Verwenden Sie den Befehl db.close. Ich habe es von der Antwort hier gefunden http://Stackoverflow.com/a/12368764/3465227 –