Você pode criar um
mongoUtil.js
módulo que tem funções para conectar ao mongo e retornar uma instância de banco de dados do 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;
}
};
Para usá-lo, você faria isso em seu
app.js
:var mongoUtil = require( 'mongoUtil' );
mongoUtil.connectToServer( function( err, client ) {
if (err) console.log(err);
// start the rest of your app here
} );
E então, quando você precisar acessar o mongo em outro lugar, como em outro
.js
arquivo, você pode fazer isso:var mongoUtil = require( 'mongoUtil' );
var db = mongoUtil.getDb();
db.collection( 'users' ).find();
A razão pela qual isso funciona é que no nó, quando os módulos são
require
'd, eles só são carregados/originados uma vez, então você só vai acabar com uma instância de _db
e mongoUtil.getDb()
sempre retornará a mesma instância. Nota, código não testado.