Как получить экземпляр db из собственного драйвера node-mongo?

Учтите, что у меня открыто соединение MongoDB в самом основном файле app.js, и следующий код попадает в его обратный вызов:

mongodb.connect('MongoDBUrlGoesHere', function (err, db) {
   app.listen(app.get('port'), function AppListnCB() {
       console.log("Server listening on port " + app.get('port'));
   });
});

Все это делается для того, чтобы в приложении был только один экземпляр базы данных.

Теперь, если мы находимся в другом файле external.js и нам нужен тот же объект db, который уже подключен. Это можно сделать очень легко, если мы используем mongoskin или мангуст

Может ли кто-нибудь помочь мне найти, как это можно сделать с родным драйвером?


person Amol M Kulkarni    schedule 22.06.2013    source источник


Ответы (1)


Вы можете написать оболочку, новый модуль, в котором вы храните экземпляр базы данных, что-то вроде этого:

//db.js
var HOSTNAME = ...
var PORT = ...

var db = module.exports = {};
var instance;

db.connect = function (){
    ...
    instance = <db_instance>;
};

db.disconnect = function (){
    ...
    instance = null;
};

db.instance = function (){
    return instance;
};

Теперь каждый раз, когда вам нужно, чтобы экземпляр БД извлекал его, выполняя:

var db = require ("./path/to/db");
db.instance ();
person Gabriel Llamas    schedule 22.06.2013