In tanti esempi introduttivi di utilizzare MongoDB, si vede il codice come questo:tenere aperta una connessione al database MongoDB
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db)
{
/* Some operation... CRUD, etc. */
db.close();
});
Se MongoDB è come qualsiasi altro sistema di database, open
e close
operazioni sono in genere costosi tempo-saggio .
Quindi, la mia domanda è questa: E 'OK per fare semplicemente il MongoClient.connect("...
una volta, assegnare il tornata db
valore da qualche modulo globale, hanno diverse funzioni nel modulo fare vari lavori relative al database (documenti di inserimento in raccolte, aggiornamento documenti, ecc. ecc.) quando vengono chiamati da altre parti dell'applicazione (e quindi riutilizzano il valore db
), e quindi, quando l'applicazione viene eseguita, solo allora eseguono il close
.
In altre parole, open
e close
vengono eseguiti una sola volta, non ogni volta che è necessario eseguire un'operazione relativa al database. E continui a riutilizzare l'oggetto db
che è stato restituito durante l'iniziale open\connect
, per poi eliminarlo alla fine, con lo close
, quando hai finito con tutte le attività relative al database.
Ovviamente, poiché tutto l'I/O è asincrono, prima dello close
è necessario assicurarsi che l'ultima operazione di database completata prima di emettere il close
. Sembra che questo dovrebbe essere OK, ma volevo ricontrollare nel caso in cui mi manchi qualcosa mentre sono nuovo in MongoDB. Grazie!
Controllare anche [questo] (http://stackoverflow.com/questions/14495975/why-its-recommended-not-to-close-any-mongodb-connection-anywhere-in-node-js-code), potrebbe aiutarti –
Interessante .... Sì, utile; Grazie mille! – Lew