MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Chia sẻ kết nối trình điều khiển Node.js Mongodb-native

bạn có thể có một thư viện bao bọc tất cả những điều này một cách độc đáo - điều đó có nghĩa là chỉ một kết nối đến cơ sở dữ liệu sẽ được mở và kết nối tương tự (mở) sẽ được trả lại cho yêu cầu thứ hai - nếu bạn nhận được 1000+ mỗi giây, đây là vấn đề thực hiện hoặc phá vỡ (tức là không mở lại kết nối mỗi lần yêu cầu) ...

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

connect.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. Nhận tất cả các tên trường trong một bộ sưu tập mongodb?

  2. mongoose .save () không hoạt động

  3. MongoDB - Tìm tài liệu phù hợp với điều kiện nhất định cho các khóa trường không xác định

  4. triển khai mongodb diff () trong Meteor trên máy chủ?

  5. Spring không lưu đối tượng vào MongoDB một cách chính xác