MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So verwenden Sie die Verbindung zu Mongodb über die NodeJ-Anwendung und -Module hinweg ordnungsgemäß wieder

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.