U kunt een algemene variabele . gebruiken om de verbinding vast te houden (bijv. db
), bijvoorbeeld:
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))
})
})
Of, als je wilt, kun je ook het Promise-object . gebruiken dat wordt geretourneerd door MongoClient
als het wordt aangeroepen zonder een callback-argument:
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))
}))
})
Houd er rekening mee dat ik de functiedefinitie van de ES6-fatpijl in het tweede voorbeeld heb gebruikt.
Je hebt helemaal gelijk dat je MongoClient
. niet moet bellen elke keer. Door een globale variabele of Promises te gebruiken, kan het MongoDB node.js-stuurprogramma een verbindingspool maken, waarmee ten minste twee goede dingen worden bereikt:
- Verbindingen worden hergebruikt in een pool, dus er is geen meervoudig duur installatie-/afbraakproces voor de levensduur van uw toepassing. U sluit één keer aan en laat de chauffeur de rest voor u doen.
- U kunt de hoeveelheid verbinding die uw toepassing met de database maakt, bepalen door de grootte van de verbindingspool te beperken.
24-08-2018 bewerken :De MongoClient.connect()
methode in node.js driver versie 3.0 en nieuwer retourneert een client-object in plaats van een database-object. De bovenstaande voorbeelden zijn aangepast om ze up-to-date te houden met de nieuwste node.js-stuurprogrammaversie.