MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come riutilizzare correttamente la connessione a Mongodb attraverso l'applicazione e i moduli NodeJs

Puoi creare un mongoUtil.js modulo che ha funzioni per connettersi a mongo e restituire un'istanza 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;
  }
};

Per usarlo, dovresti farlo nel tuo app.js :

var mongoUtil = require( 'mongoUtil' );

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

E poi, quando hai bisogno di accedere a mongo da qualche altra parte, come in un altro .js file, puoi farlo:

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

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

Il motivo per cui funziona è che in node, quando i moduli sono require 'd, vengono caricati/ricevuti solo una volta, quindi ti ritroverai solo con un'istanza di _db e mongoUtil.getDb() restituirà sempre la stessa istanza.

Nota, codice non testato.