sql >> Databasteknik >  >> NoSQL >> MongoDB

Bästa sättet att ansluta till MongoDB med Node.js

Du kan använda en global variabel för att hålla anslutningen (t.ex. db ), till exempel:

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))
    })
})

Eller, om du föredrar det, kan du också använda Promise-objektet som returneras av MongoClient om det anropas utan ett 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))
    }))
})

Observera att jag använde ES6 fettpilfunktionsdefinitionen i det andra exemplet.

Du har helt rätt i att du inte ska ringa MongoClient varje gång. Genom att använda en global variabel eller Promises kan MongoDB node.js-drivrutinen skapa en anslutningspool, som uppnår minst två bra saker:

  • Anslutningar återanvänds i en pool, så det finns ingen dyrbar installations-/nedbrytningsprocess under hela programmets livstid. Du ansluter en gång och låter föraren ta hand om resten åt dig.
  • Du kan kontrollera mängden anslutning som din applikation gör till databasen genom att begränsa storleken på anslutningspoolen.

Redigera 2018-08-24 :MongoClient.connect() metod i node.js drivrutinsversion 3.0 och nyare returnerar ett klientobjekt istället för ett databasobjekt. Exemplen ovan har modifierats för att hålla den uppdaterad med den senaste drivrutinsversionen av node.js.



  1. MongoDB med redis

  2. Redis Cross Slot-fel

  3. MongoDB kartlägga/minska över flera samlingar?

  4. vårdata mongodb grupp av