sql >> Database teknologi >  >> NoSQL >> MongoDB

Bedste måde at oprette forbindelse til MongoDB ved hjælp af Node.js

Du kan bruge en global variabel for at holde forbindelsen (f.eks. db ), for eksempel:

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, hvis du foretrækker det, kan du også bruge Promise-objektet der returneres af MongoClient hvis det kaldes uden et tilbagekaldsargument:

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

Bemærk venligst, at jeg brugte ES6 fedtpilfunktionsdefinitionen i det andet eksempel.

Du har fuldstændig ret i, at du ikke skal ringe til MongoClient hver gang. Ved at bruge en global variabel eller løfter tillader MongoDB node.js-driveren at oprette en forbindelsespulje, som opnår mindst to gode ting:

  • Forbindelser genbruges i en pulje, så der er ingen flere dyre opsætnings-/nedbrydningsprocesser i hele din applikations levetid. Du tilslutter én gang, og lader chaufføren tage sig af resten for dig.
  • Du kan kontrollere mængden af ​​forbindelse, din applikation laver til databasen, ved at begrænse størrelsen af ​​forbindelsespuljen.

Rediger 2018-08-24 :MongoClient.connect() metode i node.js driver version 3.0 og nyere returnerer et klientobjekt i stedet for et databaseobjekt. Eksemplerne ovenfor er blevet ændret for at holde den opdateret med den seneste node.js driverversion.



  1. Hvordan søger du efter nøgler med en værdi? Få for eksempel alle NØGLER, hvor værdien er en eller anden værdi

  2. Hvordan gør jeg mere end/mindre end at bruge MongoDB?

  3. Hvordan konverteres en streng til ObjectId i nodejs mongodb native driver?

  4. Hvordan opdaterer jeg Array Elements matchende kriterier i et MongoDB-dokument?