Можете да създадете mongoUtil.js
модул, който има функции както за свързване към mongo, така и за връщане на mongo db екземпляр:
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;
}
};
За да го използвате, трябва да направите това във вашия app.js
:
var mongoUtil = require( 'mongoUtil' );
mongoUtil.connectToServer( function( err, client ) {
if (err) console.log(err);
// start the rest of your app here
} );
И след това, когато имате нужда от достъп до mongo някъде другаде, например в друг .js
файл, можете да направите това:
var mongoUtil = require( 'mongoUtil' );
var db = mongoUtil.getDb();
db.collection( 'users' ).find();
Причината това да работи е, че в възел, когато модулите са require
'd, те се зареждат/извличат само веднъж, така че в крайна сметка ще имате само един екземпляр на _db
и mongoUtil.getDb()
винаги ще връща същия екземпляр.
Забележка, кодът не е тестван.