我正在尝试使用MongoJS作为 Node.js 中本机 Mongo 驱动程序的包装器。我正在将集合中的文档建模为 JavaScript 类,其中包含populate()
,save()
等方法。
在 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();
});
};
我发现,一旦我close()
在 MongoJS 对象上调用该方法,我就无法再在后续调用中打开新连接。但是,如果我不调用此方法,那么一旦所有异步调用完成,Node 进程就永远不会终止,就好像它正在等待与 Mongo 断开连接一样。
使用 MongoJS 管理与 Mongo 的连接的正确方法是什么?