sql >> Database >  >> NoSQL >> MongoDB

Node.js Mongodb-native driververbinding delen

je zou een bibliotheek kunnen hebben die dit alles mooi inpakt - het betekent dat er maar één verbinding met de database wordt geopend en dezelfde (open) verbinding wordt geretourneerd voor het tweede verzoek - als je 1000+ per seconde krijgt, is dit een make-or-break-probleem (d.w.z. de verbinding niet bij elk verzoek opnieuw openen)...

gebruikers.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. Is er een manier om mongodb te dwingen een bepaalde index in ram op te slaan?

  2. MongoDB-shell en server komen niet overeen

  3. Controleer of elk element in de array overeenkomt met de voorwaarde

  4. ID ophalen van het laatst ingevoegde document in een mongoDB met Java-stuurprogramma