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

node-mongodb-native:come posso condividere l'oggetto db api della richiamata di connessione tramite la mia applicazione

Db.open apre la connessione a mongodb e restituisce un riferimento a se stesso. Vedi qui per il codice sorgente:https ://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/db.js#L245

Tutto ciò che desideri è evitare di avviare la tua app express in ascolto sulla sua porta e ricevere richieste fino a quando non sarà stata stabilita la connessione a mongodb.

Quindi quello che potresti fare è questo:

var mongodb = require("mongodb"),
    express = require("express"),
    mongoServer = new mongodb.Server('localhost', 27017),
    dbConnector = new mongodb.Db('example', mongoServer),
    db;

var app = new express();

app.get('/products', function(req, res, next) {
  db.collection('products', function(err, collection) {
    if (err) next(new Error(err));
    collection.find({}, function(err, products) {
      res.send(products);
    });
  });
});

db_connector.open(function(err, opendb) {
  if (err) throw new Error(err);
  db = opendb;
  app.listen(3000);
});

Quello di cui non sono sicuro è se questa sia una buona idea. Questa soluzione non ti consente di ricreare la connessione se si è verificata un'interruzione della connessione o se hai riavviato il processo mongodb. Quindi, mentre quanto sopra potrebbe funzionare, potrebbe essere un'idea migliore creare un metodo che avvolgerà la creazione di una connessione a mongodb.