sql >> Databáze >  >> NoSQL >> MongoDB

Jak správně znovu použít připojení k Mongodb napříč aplikací a moduly NodeJs

Můžete vytvořit mongoUtil.js modul, který má funkce pro připojení k mongo a vrácení instance 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;
  }
};

Chcete-li jej použít, měli byste to provést ve svém app.js :

var mongoUtil = require( 'mongoUtil' );

mongoUtil.connectToServer( function( err, client ) {
  if (err) console.log(err);
  // start the rest of your app here
} );

A pak, když potřebujete přístup k mongo někde jinde, například v jiném .js soubor, můžete provést toto:

var mongoUtil = require( 'mongoUtil' );
var db = mongoUtil.getDb();

db.collection( 'users' ).find();

Důvod, proč to funguje, je ten, že v uzlu, když jsou moduly require Jsou načteny/zdrojovány pouze jednou, takže vždy skončíte pouze s jednou instancí _db a mongoUtil.getDb() vždy vrátí stejnou instanci.

Poznámka, kód nebyl testován.



  1. Změna výchozího oprávnění k souboru na redis dump

  2. MongoDB - stránkování

  3. Řešení pomalých dotazů v MongoDB

  4. Bůh konfigurační soubor pro sledování stávajících procesů?