سؤال

Consider, I have MongoDB connection opened in the main app.js file itself and the following code fall in it's call back:

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

This is all done to have only one db instance across the application.

Now, If we are in another external.js file and need a same db object which is aleady has connected. This can be done very easily if we are using mongoskin or mongoose

Can someone help me to find how this can be done with native driver?

هل كانت مفيدة؟

المحلول

You could write a wrapper, a new module where you store the db instance, something similar to this:

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

Now, every time you need the db instance retrieve it by doing:

var db = require ("./path/to/db");
db.instance ();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top