Node.js Mongodb - общий доступ к соединению драйвера

main.js

var http = require('http');
var UserModel = require('./models/user.js');
var server = http.createServer(function(req, res){
  UserModel.create({
  }), function(e, o){
    if(e) { console.log(e); } else {
    } console.log(o); }
  });
}).listen(3000);

connections.js

var mongo = require('mongodb');

module.exports = {
    dbMain: new mongo.Db('main', new mongo.Server('127.0.0.1', 27017, { auto_reconnect: true }, {})),
    dbLog: new mongo.Db('log', new mongo.Server('127.0.0.1', 27017, { auto_reconnect: true }, {}))
};

/models/user.js

var mongodb = require('mongodb');
var db = require('./connections.js').dbMain;

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

Когда я использую приведенный выше код, сервер вылетает из-за проблемы, что, во ВТОРОЙ раз, когда приходит запрос, у нас все еще остается соединение с базой данных, поэтому давайте добавим db.close в нашу функцию Users.create.

  create: function(newData, callback){
    db.open(function(e, db){
      db.collection('users', function(e, collection){
        collection.insert(newData, function(e, o){
          db.close(); // Voila.
          callback(e, o);
        });
      });
    });
  }

На этом этапе сервер МОЖЕТ аварийно завершить работу, поскольку из-за нескольких открытых соединений я не понимаю, почему и как это может произойти, но это происходит.

Как организовать свой проект в виде моделей (я не хочу использовать Mongoose, моя проверка выполняется в другом слое, а не в модели, поэтому Mongoose будет для меня излишним)? Также как мне обрабатывать соединения в проекте?

Ответы на вопрос(2)

Ваш ответ на вопрос