How to separate and re-use mongodb connection in Nodejs [duplicate]

General Tech Bugs & Fixes 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

I am trying to separate the connection to mongodb using nodejs and the current code looks like this in a file mongodb.js:

const mongoClient = require('mongodb').MongoClient;
const env = process.env.NODE_ENV || 'development';
const mongoDbUrl = require('../config/mongodb.json')[env];
let mongodb;

function connect(cb){
    mongoClient.connect(mongoDbUrl.url, (err, db) => {
        if (err) return "Could not connect to mongodb" ;
        else{
            console.log("Connection to mongodb is successful")
        }
        mongodb = db;
        cb();
    });
}
function get(){
    return mongodb;
}

function close(){
    mongodb.close();
}

module.exports = {
    connect,
    get,
    close,
};

and in other files for ex app.js I use it as:

const mongodb = require('../config/mongodb');
mongodb.connect(() => {
    mongodb.get().collection('tyk_organizations').find({}).toArray()
        .then((users) => {
            console.log('organizations ', users);
        });
});
profilepic.png
manpreet 2 years ago

 

Try this:

// dbConnection.js
const MongoClient = require('mongodb').MongoClient;
const env = process.env.NODE_ENV || 'development';
const mongoDbUrl = require('../config/mongodb.json')[env];
let client;

module.exports = async () => {
  // this gives you client
  // Mongoclient.connect returns promise if no callback is passed
  try {
    client = await MongoClient.connect(mongoDbUrl.url, { useNewUrlParser: true });
  } catch (e) {
    console.log("Could not connect to mongodb");
  }
}

module.exports.get = () => client;

module.exports.close = () => client.close()

In your server or app

const connect = require('./dbConnection')
// establish connection
connect()

Elsewhere you can use like:

const { get } = require('./dbConnection')
// client is a promise
const client = get();
// then you can use like
client.db(dbName).collection(collName)...

0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.