私はmongodbデータベースの移行を行っているnodejsアプリケーションを持っています。MongoDB接続がconnection.close()の後で必ず閉じるとは限りません
それのすべてが
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);
});
で始まり、そこの間で
console.log('Close');
dbConnection.close((err) => {
if (err) console.log(err);
console.log('Closed');
});
で終わるかなり多くが起こっている、作成した新しいコレクションは、文書等を再配置が、決して新しい接続が開かれました。アプリの出力は次のとおりです。データベース・ログは
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)
[挿入と、ここでアップデートの多く]がある
Close
Closed
Opened connection to localhost testDatabase
[ここで他のログの多く]
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)
ご覧のとおり、1つのmongodb dbConnection.close()が呼び出されてnodejsアプリケーションが終了するのを防ぎましたが、接続は開いたままです。私はかなり長い間これを見ていますが、何がこの現象を引き起こす可能性があるのか理解していませんか?
ねえ、私はあなたが問題を理解していないと思います。間にすべてのデータベース移行を行っているので、すぐに接続を閉じる必要はありません。また、プログラムを正常に終了させるには、データベース接続を閉じる必要があります。あなたが参照しているのは、接続をもう一度使用したい場合、接続を閉じるべきではないということです。クエリの間に – Philiiiiiipp
ああ、おそらくあなたはhttps://github.com/mongodb/node-mongodb-nativeを試してみるべきです。 db.closeコマンドを使用します。私はここの答えからそれを見つけましたhttp://stackoverflow.com/a/12368764/3465227 –