MongoDBBeginner
MongoDB-র সাথে Connection
Connection string, connection events, readyState এবং প্রোডাকশনে secure connection — বাংলায়।
12টি অংশবাংলা ভাষায়
Connection string
লোকাল MongoDB এবং MongoDB Atlas — দুই জায়গাতেই mongoose.connect() দিয়ে যুক্ত হওয়া যায়:
Local + Atlas connectionjs
js
// Local MongoDB
const local = "mongodb://127.0.0.1:27017/myapp";
// MongoDB Atlas (cloud)
const atlas =
"mongodb+srv://USERNAME:PASSWORD@cluster0.xxxxx.mongodb.net/myapp?retryWrites=true&w=majority";
// password-এ special char থাকলে encodeURIComponent দিয়ে encode করুন
await mongoose.connect(process.env.MONGODB_URI || local);Connection events
Connection খোলা, error ও disconnect — এই তিনটি ঘটনা track করা ভালো অভ্যাস:
Connection listenerjs
js
mongoose.connection.on("connected", () => {
console.log("Mongoose connected to", mongoose.connection.host);
});
mongoose.connection.on("error", (err) => {
console.error("Mongoose connection error:", err.message);
});
mongoose.connection.on("disconnected", () => {
console.log("Mongoose disconnected");
});readyState
Connection-এর বর্তমান অবস্থা mongoose.connection.readyState দিয়ে জানা যায়:
| State | মান | অর্থ |
|---|---|---|
| disconnected | 0 | সংযুক্ত নয় |
| connected | 1 | সংযুক্ত |
| connecting | 2 | সংযুক্ত হওয়া চলছে |
| disconnecting | 3 | সংযোগ বিচ্ছিন্ন হচ্ছে |
Best practice
- Secret কখনোই কোডে না — connection string
.env-এ রাখুন, কোডেprocess.envথেকে নিন - একটা প্রজেক্টে এক connection manager — প্রতিটি request-এ নতুন connection খুলবেন না
- Serverless (Next.js)-এ global cache দিয়ে connection reuse করুন যেন cold start ধীর না হয়
Next.js-এ reusable connectionts
ts
import mongoose from "mongoose";
const MONGODB_URI = process.env.MONGODB_URI!;
declare global {
var mongooseCache: { conn: typeof mongoose | null };
}
global.mongooseCache ||= { conn: null };
export async function connectDB() {
if (global.mongooseCache.conn) return global.mongooseCache.conn;
global.mongooseCache.conn = await mongoose.connect(MONGODB_URI);
return global.mongooseCache.conn;
}শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।