MongoJSをNodeのネイティブMongoドライバのラッパーとして使用しようとしています。私はコレクション内のドキュメントをpopulate()
,save()
などのメソッドを持つJavaScriptクラスとしてモデル化しています。MongoJSとの接続を管理する適切な方法は何ですか?
C#やJavaなどのほとんどの言語では、明示的に接続してからすべてのクエリを切断することに慣れています。ほとんどの例は、接続の例を示していますが、完了した時点では接続を閉じることはありません。私はドライバーがこれを自分で管理できるのか、それとも自分で手動で行う必要があるのかは不明です。ドキュメントは疎です。
User.prototype.populate = function(callback) {
var that = this;
this.db = mongo.connect("DuxDB");
this.db.collection(dbName).findOne({email : that.email}, function(err, doc){
if(!err && doc) {
that.firstName = doc.firstName;
that.lastName = doc.lastName;
that.password = doc.password;
}
if (typeof(callback) === "function"){
callback.call(that);
}
that.db.close();
});
};
私はできるだけ早く私はMongoJSオブジェクトのclose()
メソッドを呼び出すと、私はもはや以降の呼び出しに新しい接続を開くことができないことを発見しています:
はここに関連するコードです。しかし、このメソッドを呼び出さないと、あたかもMongoからの切断を待っているかのように、すべての非同期呼び出しが終了するとNodeプロセスが終了することはありません。
MongoJSとの接続を管理する適切な方法は何ですか?
意味があります。オブジェクトが必要なくなったときに接続を閉じる適切な時間がありますか(ある種のデストラクタ)?または、JavaScriptのガベージがMongoJSオブジェクトへの参照を収集するときに、これがドライバによって考慮されますか? close()を呼び出さないと、すべての呼び出しが終了したときにノードプロセスがコンソールで終了することはありません。 – DuxPrime