MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

NodeJS - MongoDB:използвайте отваряща връзка

Когато require('somemodule') и след това го изисква отново за втори път, той ще използва ВЕЧЕ заредения екземпляр. Това ви позволява да създавате сингълтъни доста лесно.

И така - вътре в 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;

След това вътре в 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);
  })
}

И вътре в b.js :

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

Идеята е, когато и двете a.js и b.js извикване на getMongoCollection , първият път ще се свърже, а вторият път ще върне вече свързания. По този начин се гарантира, че използвате същата връзка (сокет).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tastypie връща данни от DELETE заявки?

  2. Как мога да създам поле за автоматично нарастване на meteor?

  3. Филтриране на документи по разстояние, съхранени в документа с $near

  4. Превключване на булевата стойност на поддокументите

  5. Помогнете да дефинирате страхотен инструмент за графичен интерфейс на MongoDB