U kunt een mongoUtil.js
. maken module die functies heeft om zowel verbinding te maken met mongo als een mongo db-instantie te retourneren:
const MongoClient = require( 'mongodb' ).MongoClient;
const url = "mongodb://localhost:27017";
var _db;
module.exports = {
connectToServer: function( callback ) {
MongoClient.connect( url, { useNewUrlParser: true }, function( err, client ) {
_db = client.db('test_db');
return callback( err );
} );
},
getDb: function() {
return _db;
}
};
Om het te gebruiken, doe je dit in je app.js
:
var mongoUtil = require( 'mongoUtil' );
mongoUtil.connectToServer( function( err, client ) {
if (err) console.log(err);
// start the rest of your app here
} );
En dan, wanneer je ergens anders toegang tot mongo nodig hebt, zoals in een andere .js
bestand, kunt u dit doen:
var mongoUtil = require( 'mongoUtil' );
var db = mongoUtil.getDb();
db.collection( 'users' ).find();
De reden dat dit werkt is dat in node, wanneer modules require
. zijn 'd, ze worden maar één keer geladen/gesourced, dus je krijgt maar één instantie van _db
en mongoUtil.getDb()
zal altijd dezelfde instantie retourneren.
Let op, code niet getest.