我試圖使用MongoJS作爲Node中本地Mongo驅動程序的包裝。我使用類似populate()
,save()
等方法將我的集合中的文檔建模爲類。用MongoJS管理與Mongo的連接的正確方法是什麼?
在大多數語言(如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()
方法,我不能再打開後續調用一個新的連接。但是,如果我不調用這個方法,一旦所有的異步調用完成,Node進程就不會終止,就好像它正在等待與Mongo斷開連接一樣。
用MongoJS管理Mongo連接的正確方法是什麼?
有道理。當我不再需要對象(某種析構函數)時,是否有合適的時間來關閉連接?或者當JavaScript垃圾收集對MongoJS對象的引用時,驅動程序是否考慮到了這一點? 不調用close()永遠不會允許Node進程在所有調用完成時在控制檯中終止。 – DuxPrime 2012-04-18 19:52:16