Můžete použít globální proměnnou pro udržení připojení (např. db
), například:
var db = null // global variable to hold the connection
MongoClient.connect('mongodb://localhost:27017/', function(err, client) {
if(err) { console.error(err) }
db = client.db('test') // once connected, assign the connection to the global variable
})
app.get('/', function(req, res) {
db.collection('test').find({}).toArray(function(err, docs) {
if(err) { console.error(err) }
res.send(JSON.stringify(docs))
})
})
Nebo, chcete-li, můžete také použít Objekt Promise který vrací MongoClient
pokud je volána bez argumentu zpětného volání:
var conn = MongoClient.connect('mongodb://localhost:27017/') // returns a Promise
app.get('/', function(req, res) {
conn.then(client=> client.db('test').collection('test').find({}).toArray(function(err, docs) {
if(err) { console.error(err) }
res.send(JSON.stringify(docs))
}))
})
Vezměte prosím na vědomí, že ve druhém příkladu jsem použil definici funkce tlusté šipky ES6.
Máte naprostou pravdu, že byste neměli volat MongoClient
pokaždé. Použití globální proměnné nebo Promises umožňuje ovladači MongoDB node.js vytvořit fond připojení, což přináší alespoň dvě dobré věci:
- Spojení jsou znovu použita ve fondu, takže po celou dobu životnosti vaší aplikace není nutné provádět vícenásobné nákladné nastavování/rozpojování. Jednou se připojíte a o zbytek se za vás postará řidič.
- Můžete řídit množství připojení, které vaše aplikace vytvoří s databází, omezením velikosti fondu připojení.
Upravit 24. 8. 2018 :MongoClient.connect()
metoda v ovladači node.js verze 3.0 a novější vrací objekt klienta místo databázového objektu. Výše uvedené příklady byly upraveny tak, aby byly aktuální s nejnovější verzí ovladače node.js.