Estoy intentando usar MongoJS como un contenedor para el controlador nativo de Mongo en Nodo. Estoy modelando los documentos en mi colección como clases de JavaScript con métodos como populate()
, save()
, etc.¿Cuál es la forma correcta de administrar las conexiones a Mongo con MongoJS?
En la mayoría de los lenguajes como C# y Java, estoy acostumbrado a conectar y desconectar explícitamente para cada consulta. La mayoría de los ejemplos solo dan un ejemplo de conexión, pero nunca cierran la conexión cuando termina. No estoy seguro si el controlador puede administrar esto solo o si tengo que hacerlo yo mismo manualmente. La documentación es escasa.
Aquí está el código correspondiente:
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();
});
};
estoy encontrando que tan pronto como lo llamo el método close()
en el objeto MongoJS, ya no puedo abrir una nueva conexión en llamadas posteriores. Sin embargo, si no llamo a este método, el proceso de Nodo nunca termina una vez que finalizan todas las llamadas asíncronas, como si estuviera esperando desconectarse de Mongo.
¿Cuál es la forma correcta de administrar las conexiones a Mongo con MongoJS?
Tiene sentido. ¿Hay un momento apropiado para cerrar la conexión cuando ya no necesito el objeto (como un tipo de destructor)? ¿O el conductor tiene esto en cuenta cuando la basura de JavaScript recopila la referencia al objeto MongoJS? No llamar a close() nunca permite que el proceso de nodo finalice en la consola cuando finalizan todas las llamadas. – DuxPrime