MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment réutiliser correctement la connexion à Mongodb dans l'application et les modules NodeJs

Vous pouvez créer un mongoUtil.js module qui a des fonctions à la fois pour se connecter à mongo et renvoyer une instance de base de données mongo :

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;
  }
};

Pour l'utiliser, vous le feriez dans votre app.js :

var mongoUtil = require( 'mongoUtil' );

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

Et puis, quand vous avez besoin d'accéder à mongo ailleurs, comme dans un autre .js fichier, vous pouvez faire ceci :

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

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

La raison pour laquelle cela fonctionne est que dans node, lorsque les modules sont require 'd, ils ne sont chargés/sources qu'une seule fois, vous ne vous retrouverez donc qu'avec une seule instance de _db et mongoUtil.getDb() renverra toujours la même instance.

Attention, code non testé.