sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man korrekt återanvänder anslutning till Mongodb över NodeJs applikation och moduler

Du kan skapa en mongoUtil.js modul som har funktioner för att både ansluta till mongo och returnera 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;
  }
};

För att använda den gör du detta 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
} );

Och sedan, när du behöver tillgång till mongo någon annanstans, som i en annan .js fil kan du göra så här:

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

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

Anledningen till att detta fungerar är att i noden, när moduler är require 'd, de laddas/källs bara in en gång så du kommer bara att få en instans av _db och mongoUtil.getDb() kommer alltid att returnera samma instans.

Obs, kod inte testad.



  1. mongodb:hur kan jag se exekveringstiden för det samlade kommandot?

  2. Django Redis Fel okänt kommando 'BZPOPMIN'

  3. Uppgradering till ClusterControl Enterprise Edition

  4. Är Redis TimeSeries rätt verktyg för att fånga ljusstakar i aktiekurser