sql >> Database >  >> NoSQL >> MongoDB

Hoe de verbinding met Mongodb op de juiste manier opnieuw te gebruiken in de toepassing en modules van NodeJs

U kunt een mongoUtil.js . maken module die functies heeft om zowel verbinding te maken met mongo als een mongo db-instantie te retourneren:

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

Om het te gebruiken, doe je dit in je app.js :

var mongoUtil = require( 'mongoUtil' );

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

En dan, wanneer je ergens anders toegang tot mongo nodig hebt, zoals in een andere .js bestand, kunt u dit doen:

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

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

De reden dat dit werkt is dat in node, wanneer modules require . zijn 'd, ze worden maar één keer geladen/gesourced, dus je krijgt maar één instantie van _db en mongoUtil.getDb() zal altijd dezelfde instantie retourneren.

Let op, code niet getest.



  1. Redis Publiceren/abonneren

  2. BSON-bibliotheek voor java?

  3. Mongoose - met behulp van Populate op een array van ObjectId

  4. Fout bij het verbinden met MongoDb Atlas Server