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

Sådan genbruges forbindelsen til Mongodb korrekt på tværs af NodeJs applikation og moduler

Du kan oprette en mongoUtil.js modul, der har funktioner til både at forbinde til mongo og returnere en mongo db-instans:

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

For at bruge det, skal du gøre dette i din app.js :

var mongoUtil = require( 'mongoUtil' );

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

Og så, når du har brug for adgang til mongo et andet sted, som i en anden .js fil, kan du gøre dette:

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

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

Grunden til at dette virker er, at i node, når moduler er require 'd, de bliver kun indlæst/sourcet én gang, så du vil kun ende med én forekomst af _db og mongoUtil.getDb() vil altid returnere den samme instans.

Bemærk, kode er ikke testet.



  1. Pressemeddelelse:ScaleGrid annoncerer hostingtjeneste for Redis™ på AWS

  2. Hvordan designer man redis pub/sub til et onlinemeddelelsessystem?

  3. Opdater et element i et array, der er i et array

  4. Vedligeholdelse af en åben Redis-forbindelse ved hjælp af BookSleeve