Sto tentando di utilizzare MongoJS come wrapper per il driver Mongo nativo nel nodo. Sto modellando i documenti nella mia raccolta come classi JavaScript con metodi come populate()
, save()
, ecc.Qual è il modo corretto per gestire le connessioni a Mongo con MongoJS?
Nella maggior parte delle lingue come C# e Java, sono solito connettersi e disconnettere esplicitamente per ogni query. La maggior parte degli esempi fornisce solo un esempio di connessione, ma non chiude mai la connessione quando viene eseguita. Sono incerto se il guidatore è in grado di gestirlo da solo o se devo farlo manualmente da solo. La documentazione è scarsa.
Ecco il codice rilevante:
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();
});
};
Ho constatato che, non appena chiamo il metodo close()
sull'oggetto MongoJS, non posso più aprire una nuova connessione per le chiamate successive. Tuttavia, se non chiamo questo metodo, il processo Node non termina mai una volta terminate tutte le chiamate asincrone, come se fosse in attesa di disconnettersi da Mongo.
Qual è il modo corretto per gestire le connessioni a Mongo con MongoJS?
Ha senso. C'è un momento appropriato per chiudere la connessione quando non ho più bisogno dell'oggetto (una sorta di distruttore)? O è questo preso in considerazione dal driver quando la garbage JavaScript raccoglie il riferimento all'oggetto MongoJS? Non chiamare close() non consente mai al processo del nodo di terminare nella console quando tutte le chiamate sono terminate. – DuxPrime