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

NodeJS - MongoDB:brug en åbningsforbindelse

Når du require('somemodule') og derefter kræve det igen en anden gang, vil det bruge den ALLEREDE indlæste instans. Dette lader dig oprette singletons ganske nemt.

Altså - inde i sharedmongo.js :

var mongo = require('mongodb');

// this variable will be used to hold the singleton connection
var mongoCollection = null;

var getMongoConnection = function(readyCallback) {

  if (mongoCollection) {
    readyCallback(null, mongoCollection);
    return;
  }

  // get the connection
  var server = new mongo.Server('127.0.0.1', 27017, {
    auto_reconnect: true
  });

  // get a handle on the database
  var db = new mongo.Db('squares', server);
  db.open(function(error, databaseConnection) {
    databaseConnection.createCollection('testCollection', function(error, collection) {

      if (!error) {
        mongoCollection = collection;
      }

      // now we have a connection
      if (readyCallback) readyCallback(error, mongoCollection);
    });
  });
};
module.exports = getMongoConnection;

Derefter inde i a.js :

var getMongoConnection = require('./sharedmongo.js');
var b = require('./b.js');
module.exports = function (req, res) {
  getMongoConnection(function(error, connection){
    // you can use the Mongo connection inside of a here
    // pass control to b - you don't need to pass the mongo
    b(req, res);
  })
}

Og inde i b.js :

var getMongoConnection = require('./sharedmongo.js');
module.exports = function (req, res) {
  getMongoConnection(function(error, connection){
    // do something else here
  })
}

Ideen er, når både a.js og b.js ring til getMongoCollection , første gang vil den oprette forbindelse, og anden gang vil den returnere den allerede tilsluttede. På denne måde sikrer det, at du bruger den samme forbindelse (socket).




  1. Forbindelse nægtet for Redis på Heroku

  2. Mongodb tidsstempel er meget unøjagtigt - mongoose

  3. OpenShift Python mongoDB miljøvariabler ikke indstillet / kan ikke oprette forbindelse

  4. Node.js + Mongoose.js Hvordan får man summen af ​​ordrer, der er placeret på en måned eller en uge?