问题
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 ();
来源:https://stackoverflow.com/questions/17248900/how-to-get-a-instance-of-db-from-node-mongo-native-driver