MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

node-mongodb-native:Wie kann ich das db-API-Objekt des Verbindungsrückrufs über meine Anwendung freigeben?

Db.open öffnet die Verbindung zu mongodb und gibt eine Referenz auf sich selbst zurück. Siehe hier für den Quellcode:https ://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/db.js#L245

Alles, was Sie wollen, ist, mit dem Starten Ihrer Express-App, dem Abhören ihres Ports und dem Empfangen von Anfragen, zu warten, bis Ihre Verbindung zu mongodb hergestellt wurde.

Sie könnten also Folgendes tun:

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

Wobei ich mir nicht sicher bin, ob das eine gute Idee ist. Mit dieser Lösung können Sie Ihre Verbindung nicht wiederherstellen, wenn eine Verbindungsunterbrechung aufgetreten ist oder Sie Ihren mongodb-Prozess neu gestartet haben. Obwohl das obige funktionieren könnte, ist es möglicherweise eine bessere Idee, eine Methode zu erstellen, die die Erstellung einer Verbindung zu mongodb umschließt.