2015-04-20 2 views
3

Каков наилучший способ установить одиночный элемент в узле для Mongodb? Я попробовал следующий код, но он не работает при быстром вызове большого количества вызовов.Соединение Singleton MongoDB в узле

Синглтон не настроен перед последующими вызовами и, таким образом, пытается открыть слишком много соединений и в конечном итоге терпит неудачу. Нижеприведенный вызов работает хорошо для совершения нечастых вызовов.

У кого-нибудь есть предложения по лучшей практике здесь?

var db_singleon; 

var getConnection= function getConnection(callback) 
{ 
    if (db_singleton) 
    { 
     callback(null,db_singleton); 
    } 
    else 
    { 
     var connURL = mongoURI; //set in env variables 
     mongodb.connect(connURL,function(err,db){ 
      if(err) 
       console.error("Error creating new connection "+err); 
      else 
      { 
       db_singleton=db;  
       console.error("created new connection"); 
      } 
      callback(err,db_singleton); 
      return; 
     }); 
    } 
} 

ответ

3

узловые модули одиночек по theirselves, просто сделать db модуль где-то:

var mongo = require('mongojs'); 
var config = require('path/to/config'); 
var connection = mongo.connect(config.connection, config.collections); 

module.exports = connection; 

, а затем require('path/to/db') это в вашей модели, и т.д.

+0

Это работало. Я немного изменил его (например, я не использую файл конфигурации), но принцип этого был именно тем, что мне нужно. Спасибо @ Kosmetika за образец! –