How to get a instance of db from node-mongo native

2020-03-25 05:17发布

问题:

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?

回答1:

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