Vous pouvez créer un mongoUtil.js
module qui a des fonctions à la fois pour se connecter à mongo et renvoyer une instance de base de données mongo :
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;
}
};
Pour l'utiliser, vous le feriez dans votre app.js
:
var mongoUtil = require( 'mongoUtil' );
mongoUtil.connectToServer( function( err, client ) {
if (err) console.log(err);
// start the rest of your app here
} );
Et puis, quand vous avez besoin d'accéder à mongo ailleurs, comme dans un autre .js
fichier, vous pouvez faire ceci :
var mongoUtil = require( 'mongoUtil' );
var db = mongoUtil.getDb();
db.collection( 'users' ).find();
La raison pour laquelle cela fonctionne est que dans node, lorsque les modules sont require
'd, ils ne sont chargés/sources qu'une seule fois, vous ne vous retrouverez donc qu'avec une seule instance de _db
et mongoUtil.getDb()
renverra toujours la même instance.
Attention, code non testé.