Du kan oprette en mongoUtil.js
modul, der har funktioner til både at forbinde til mongo og returnere en mongo db-instans:
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;
}
};
For at bruge det, skal du gøre dette i din app.js
:
var mongoUtil = require( 'mongoUtil' );
mongoUtil.connectToServer( function( err, client ) {
if (err) console.log(err);
// start the rest of your app here
} );
Og så, når du har brug for adgang til mongo et andet sted, som i en anden .js
fil, kan du gøre dette:
var mongoUtil = require( 'mongoUtil' );
var db = mongoUtil.getDb();
db.collection( 'users' ).find();
Grunden til at dette virker er, at i node, når moduler er require
'd, de bliver kun indlæst/sourcet én gang, så du vil kun ende med én forekomst af _db
og mongoUtil.getDb()
vil altid returnere den samme instans.
Bemærk, kode er ikke testet.