1. ホーム
  2. node.js

[解決済み] MongoDBデータベース接続をオープンにしておく

2023-06-03 09:39:08

質問

MongoDBの使い方の入門的な例で、このようなコードをよく見かけます。

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db)
{
    /* Some operation... CRUD, etc. */
    db.close();
});

MongoDBが他のデータベースシステムと同じなら。 openclose の操作は一般的に時間的に高くつきます。

そこで、私の質問はこうです。単純に MongoClient.connect("... を一度実行し、返された db の値をモジュールのグローバルに割り当て、 モジュールの様々な関数がアプリケーションの他の部分から呼ばれたときに 様々なデータベース関連の仕事 (ドキュメントをコレクションに挿入したり、 ドキュメントを更新したり) をするようにします (そして、それによってその db の値を再利用します)、そしてアプリケーションが終了したら、 そのときだけ close .

言い換えると openclose は一度だけ実行されます - データベース関連の操作を行う必要があるたびに実行されるわけではありません。そして、あなたはその再利用を続ける db オブジェクトを再利用し続けることになります。 open\connect で返されたオブジェクトを、最後にそれを破棄するだけです。 close で、実際にデータベースに関連するすべての作業が終わったときに処分するだけです。

明らかに、すべてのI/Oは非同期であるため、その前に close を発行する前に、最後のデータベース操作が完了したことを確認することになります。 close . これは問題ないように思えますが、私はMongoDBに新しいので、私が何かを見逃している場合に備えて、ダブルチェックしたかったのです。ありがとうございます。

どのように解決するのですか?

アプリを起動し、DB に接続し、DB に対して長時間操作を行い、接続が予期せず切断された場合は再接続し、その後は接続を決して閉じない (プロセスが停止したときに発生する自動切断に依存する) ようにするのがよいでしょう。