sql >> Database >  >> NoSQL >> MongoDB

node-mongodb-native:Hoe kan ik het db api-object van de verbindingscallback delen via mijn applicatie

Db.open opent de verbinding met mongodb en retourneert een verwijzing naar zichzelf. Zie hier voor de broncode:https ://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/db.js#L245

Het enige dat u wilt, is wachten met het starten van uw express-app, luisterend naar de poort en het ontvangen van verzoeken totdat uw verbinding met mongodb tot stand is gebracht.

Dus wat je zou kunnen doen is dit:

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

Waar ik echter niet zeker van ben, is of dit een goed idee is. Met deze oplossing kunt u uw verbinding niet opnieuw maken als er een verbindingsonderbreking is geweest of als u uw mongodb-proces opnieuw hebt gestart. Dus hoewel het bovenstaande misschien werkt, is het misschien een beter idee om een ​​methode te maken die het maken van een verbinding met mongodb omsluit.




  1. ip-bereiken opslaan in Redis

  2. Hoe retourneer ik een boolean in een mongodb-categorie

  3. Spring Boot met MongoTemplate

  4. MongoDB-configuratie met node.js:Fout:kan geen verbinding maken met [localhost:27017]