MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Najlepszy sposób na połączenie z MongoDB za pomocą Node.js

Możesz użyć zmiennej globalnej do podtrzymania połączenia (np. db ), na przykład:

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

Lub, jeśli wolisz, możesz również użyć obiektu Obietnica który jest zwracany przez MongoClient jeśli zostanie wywołane bez argumentu wywołania zwrotnego:

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

Proszę zauważyć, że w drugim przykładzie użyłem definicji funkcji strzałki z ES6.

Masz całkowitą rację, że nie powinieneś wywoływać MongoClient za każdym razem. Użycie zmiennej globalnej lub Promises umożliwia sterownikowi MongoDB node.js utworzenie puli połączeń, co zapewnia co najmniej dwie dobre rzeczy:

  • Połączenia są ponownie wykorzystywane w puli, więc nie ma wielu kosztownych procesów konfiguracji/rozrywania przez cały okres istnienia aplikacji. Łączysz się raz i pozwalasz kierowcy zająć się resztą za Ciebie.
  • Możesz kontrolować ilość połączeń, jakie Twoja aplikacja tworzy z bazą danych, ograniczając rozmiar puli połączeń.

Edytuj 2018-08-24 :MongoClient.connect() Metoda w sterowniku node.js w wersji 3.0 i nowszych zwraca obiekt klienta zamiast obiektu bazy danych. Powyższe przykłady zostały zmodyfikowane, aby były aktualne z najnowszą wersją sterownika node.js.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $log

  2. Jednostki używane dla maxdistance i MongoDB?

  3. MongoDB Regex, indeks i wydajność

  4. MongoDB - Utwórz dokument

  5. Jak używać Spring do łączenia się z MongoDB, która wymaga uwierzytelnienia?