MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Udostępnianie połączenia ze sterownikiem natywnym Node.js Mongodb

możesz mieć bibliotekę, która ładnie to wszystko zamyka - oznacza to, że tylko jedno połączenie do bazy danych zostanie otwarte i to samo (otwarte) połączenie zostanie zwrócone dla drugiego żądania - jeśli otrzymujesz 1000+ na sekundę, to jest problem typu make-or-break (tj. brak ponownego otwierania połączenia przy każdym żądaniu)...

users.js :

var connections = require('./connections.js');

var serverCache = connections('127.0.0.1', 27017); 

module.exports = {
  create: function(newData, callback){
    serverCache('main', 'users', function(e, collection){
      collection.insert(newData, callback);
    })
  }
}

connections.js

var mongo = require('mongodb');

// a mongo connection cache
// pass in host & port
// it returns a function accepting dbName, collectionName & callback
var mongoCache = function(host, port){

  // keep our open connections
  var mongoDatabases = {};

  var ensureDatabase = function(dbName, readyCallback){
    // check if we already have this db connection open
    if(mongoDatabases[dbName]){
      readyCallback(null, mongoDatabases[dbName]);
      return;
    }

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

    // get a handle on the database
    var db = new mongo.Db(dbName, server);
    db.open(function(error, databaseConnection){
      if(error) throw error;

      // add the database to the cache
      mongoDatabases[dbName] = databaseConnection;

      // remove the database from the cache if it closes
      databaseConnection.on('close', function(){
        delete(mongoDatabases[dbName]);
      })

      // return the database connection
      readyCallback(error, databaseConnection);
    })
  }

  var ensureCollection = function(dbName, collectionName, readyCallback){

    ensureDatabase(dbName, function(error, databaseConnection){
      if(error) throw error;

      databaseConnection.createCollection(collectionName, function(error, collection) {
        if(error) throw error;

        // return the collection finally
        readyCallback(error, collection);
      })

    })
  }

  return ensureCollection;
}

module.exports = mongoCache;


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wstawianie i sprawdzanie daty za pomocą MongoDB i Nodejs

  2. Utwórz i znajdź geolokalizację w manguście

  3. Wyjątek uwierzytelniający MongoCredential i Uncategorized Mongo Db Exception

  4. Wyszukiwanie pełnotekstowe z wagą w manguście

  5. Jak korzystać z Liquibase-MongoDb-Spring-boot