MongoDB Connection In NextJs

Production level mongodb connection in next js

By Hackerx | 19 July 2025 • 📖 4 min read

Introduction

Hello friends आज इस blog में मैं आपको बताऊंगा कि आप next js में mongodb का connection कैसे कर सकते हैं मैंने देखा है कि बहुत से लोग केबल normal connection कर लेते हैं जिससे कि उनकी website slow हो जाती हैं या data fetch होने में time लगता है इस ब्लॉग में मैं आपको industry level code बताऊंगा जो कि next js में production में use होता है।

आखिर हम next js में normal connection क्यूँ नहीं कर सकते ?

क्योंकि next js जैसा होता तो express server की तरह ही है लेकिन उसमें कुछ मुख्य अंतर है जैसे कि next js serverless होता है। यह edges पर काम करता है यानी कि आपका code next js के कई servers पर run होगा जो की user ke nearest server पर excute होगा।

Next js server

इस कारण से हो सकता है किसी का code delhi के server पर run होगा किसका मुंबई के server पर run hoga इस कारण से हमें एक global connection बनाना पड़ता है जो कि यह ensure कर सके कि हमारा database पहले भी connect हुआ है या नहीं यदि यह पहली बार connect होता है तो उस connection को हम globally store कर लेते हैं ताकि components के hot reload होने या फिर किसी दूसरे edge से कनेक्ट होने पर भी same कनेक्शन को use कर सके।

Project Setup

Next js Installation

सबसे पहले यदि आपने Next js install नहीं किया है तो इस command से उसे install कर ले।

npx create-next-app@latest

Mongoose Installation

हम mongodb को connect करने के लिए mongoose का use करेंगे यह एक ODM(Object Data Model) hain

npm i mongoose

Code Explanation

तो चलिए guys अब मैं आपको line by line code के एक्सप्लेनेशन बताऊंगा। किस प्रकार से हमें कनेक्शन करना चाहिए?

import mongoose from "mongoose";
 
const MONGO_URI = process.env.MONGO_URI;
if(!MONGO_URI){
   throw new Error("please define MONGO_URI in env variables");
}

हमने पहले mongoose को import किया उसके बाद हम env फाइल से mongo_uri ले रहे हैं क्योंकि यह एक सेंसेटिव डाटा है और इसको हम ऐसे hardcord नहीं कर सकते। हम चेक कर रहे हैं कि mongo_uri में कुछ वैल्यू है या नहीं है यदि वैल्यू नहीं है तो हम error throw कर देंगे ताकि आगे का code एग्जीक्यूट ना हो पाए।

let cached = global.mongoose;
 
if(!cached){
   cached = global.mongoose={conn:null,promise:null};
}

यहां पर हम एक cached variable ले रहे हैं जो कि global data connection को store कर रहा हैं। यदि global connection नहीं हुआ है तो सबसे पहले हम उसको initialize करेंगे और यह केवल एक बार ही होगा इसमें हम conn और promise लेंगे जो कि यह ensure करेगा कि कनेक्शन है या नहीं।

const connectDB = async()=>{
    if(cached.conn){
        return cached.conn;
    }
 
    if(!cached.promise){
        cached.promise = mongoose.connect(MONGO_URI)
        .then(()=>mongoose.connection);
    }

यहां पर हमने connectDB function बनाया है जो की mongodb से कनेक्ट करवाएगा।

सबसे पहले हम चेक कर रहे हैं कि ऑलरेडी कनेक्शन और या नहीं है यदि कनेक्शन है तो उसको रिटर्न कर देंगे अथवा हम एक नया कनेक्शन बनाएंगे। cached.promise ensure करता है कि हमने कोई दूसरी request तो नहीं सेंड की है कनेक्शन के लिए यह पहले रिक्वेस्ट होगी तो हम कनेक्शन की प्रॉमिस ले लेंगे और डेटाबेस को कनेक्ट कर देंगे।

    try {
       cached.conn = await cached.promise;
   } catch (error) {
       cached.promise = null;
       throw error;
   }
   return cached.conn;
}
 
export default connectDB;

इसके बाद try block में हम फाइनली डेटाबेस के कनेक्शन को स्टोर करेंगे जो की प्रॉमिस से आया होगा। यदि डेटाबेस से कनेक्ट करते समय koi error aaya hoga to hum usko catch kar lenge और हम प्रॉमिस को null कर देंगे और error ko return kar denge. लास्ट में हम connectDb function को export कर देंगे।

Full Functional Code

आप इस कोड को डायरेक्ट कॉपी पेस्ट करके use कर सकते हो।

import mongoose from "mongoose";
 
const MONGO_URI = process.env.MONGO_URI;
if(!MONGO_URI){
    throw new Error("please define MONGO_URI in env variables");
}
 
let cached = global.mongoose;
 
if(!cached){
    cached = global.mongoose = {conn:null,promise:null};
}
 
const connectDB = async()=>{
    if(cached.conn){
        return cached.conn;
    }
 
    if(!cached.promise){
       cached.promise =  mongoose.connect(MONGO_URI)
        .then(()=>mongoose.connection);
    }
 
    try {
        cached.conn = await cached.promise;
    } catch (error) {
        cached.promise = null;
        throw error;
    }
    return cached.conn;
}
 
export default connectDB;

Conclusion

इस प्रकार से हम Next js में mongodb के लिए एक global connection बना सकते हैं जो की components के hot reload होने या फिर किसी दूसरे edge से कनेक्ट होने पर भी same कनेक्शन को use कर सके। इस प्रकार से डेटाबेस को बार बार कनेक्ट नहीं करना पड़ेगा।

Related tags
MongodbNext jsHindiTutorialProgramming

🔗 Share this post

💬 Comments

Please login to post your comment.
No comments yet. Be the first to comment!