Sie können eine mongoUtil.js
erstellen Modul, das Funktionen hat, um sowohl eine Verbindung zu Mongo herzustellen als auch eine Mongo-DB-Instanz zurückzugeben:
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;
}
};
Um es zu verwenden, würden Sie dies in Ihrer app.js
tun :
var mongoUtil = require( 'mongoUtil' );
mongoUtil.connectToServer( function( err, client ) {
if (err) console.log(err);
// start the rest of your app here
} );
Und dann, wenn Sie woanders Zugriff auf Mongo benötigen, wie in einer anderen .js
Datei können Sie Folgendes tun:
var mongoUtil = require( 'mongoUtil' );
var db = mongoUtil.getDb();
db.collection( 'users' ).find();
Der Grund dafür ist, dass im Knoten, wenn Module require
sind 'd, sie werden nur einmal geladen/bezogen, sodass Sie immer nur eine Instanz von _db
haben und mongoUtil.getDb()
gibt immer dieselbe Instanz zurück.
Hinweis, Code nicht getestet.