[解決済み] MongoDBデータベース接続をオープンにしておく
質問
MongoDBの使い方の入門的な例で、このようなコードをよく見かけます。
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db)
{
/* Some operation... CRUD, etc. */
db.close();
});
MongoDBが他のデータベースシステムと同じなら。
open
と
close
の操作は一般的に時間的に高くつきます。
そこで、私の質問はこうです。単純に
MongoClient.connect("...
を一度実行し、返された
db
の値をモジュールのグローバルに割り当て、 モジュールの様々な関数がアプリケーションの他の部分から呼ばれたときに 様々なデータベース関連の仕事 (ドキュメントをコレクションに挿入したり、 ドキュメントを更新したり) をするようにします (そして、それによってその
db
の値を再利用します)、そしてアプリケーションが終了したら、 そのときだけ
close
.
言い換えると
open
と
close
は一度だけ実行されます - データベース関連の操作を行う必要があるたびに実行されるわけではありません。そして、あなたはその再利用を続ける
db
オブジェクトを再利用し続けることになります。
open\connect
で返されたオブジェクトを、最後にそれを破棄するだけです。
close
で、実際にデータベースに関連するすべての作業が終わったときに処分するだけです。
明らかに、すべてのI/Oは非同期であるため、その前に
close
を発行する前に、最後のデータベース操作が完了したことを確認することになります。
close
. これは問題ないように思えますが、私はMongoDBに新しいので、私が何かを見逃している場合に備えて、ダブルチェックしたかったのです。ありがとうございます。
どのように解決するのですか?
アプリを起動し、DB に接続し、DB に対して長時間操作を行い、接続が予期せず切断された場合は再接続し、その後は接続を決して閉じない (プロセスが停止したときに発生する自動切断に依存する) ようにするのがよいでしょう。
関連
-
[解決済み】MongoDBデータベースの名前を変更する方法とは?
-
[解決済み】MongoDBシェルですべてのコレクションを一覧表示するには?
-
[解決済み】NPMインストールエラー:解析中の予期せぬJSON入力の終了 '...nt-webpack-plugin": "0'' 付近。
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] nodejsでfindAllのソート順を続編にする
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] コマンドラインからMongoDBデータベースを削除する方法を教えてください。
-
[解決済み] MongoDB データベースのすべてを削除する
-
[解決済み] NodejsでMongoDBデータベース接続を終了するとき
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エラー: nodejs の get 呼び出しで getaddrinfo ENOTFOUND が発生しました。
-
[解決済み】Node.jsのエラーECONNRESETをデバッグするにはどうすればよいですか?
-
[解決済み] 非推奨パッケージに関するNPM警告メッセージ
-
[解決済み】MongoDBのデータ/DBが見つからない
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み] AWS s3 api error: specified bucket does not exist.
-
[解決済み] Node.jsで「btoaが定義されていない」エラーが発生する
-
[解決済み] express は `body-parser deprecated undefined extended` としてエラーを投げます。
-
[解決済み] Express.js req.bodyが未定義です。