ExpressIntermediate
Express + MongoDB (Mongoose)
Express-এ MongoDB সংযোগ, model, CRUD routes — database integration বাংলায়।
11টি অংশবাংলা ভাষায়
Express-এর সাথে সাধারণত MongoDB (Mongoose ODM) বা SQL (Prisma/Sequelize) ব্যবহার হয়। এখানে MongoDB + Mongoose দেখবো।
ধাঁধাঁ Setup
# MongoDB install (ডেস্কটপ বা MongoDB Atlas)
npm install mongoose dotenv.envenv
env
PORT=5000
MONGO_URI=mongodb://localhost:27017/myappDatabase Connection
config/db.jsjavascript
javascript
const mongoose = require("mongoose");
const connectDB = async () => {
try {
const conn = await mongoose.connect(process.env.MONGO_URI);
console.log("MongoDB connected:", conn.connection.host);
} catch (error) {
console.error("DB ত্রুটি:", error.message);
process.exit(1);
}
};
module.exports = connectDB;models/User.jsjavascript
javascript
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema({
name: { type: String, required: true, trim: true },
email: {
type: String,
required: true,
unique: true,
lowercase: true,
},
age: { type: Number, min: 0, max: 120, default: 0 },
createdAt: { type: Date, default: Date.now },
});
module.exports = mongoose.model("User", userSchema);CRUD Routes
routes/users.jsjavascript
javascript
const express = require("express");
const User = require("../models/User");
const router = express.Router();
// GET all
router.get("/", async (req, res, next) => {
try {
const users = await User.find().sort("-createdAt");
res.json({ count: users.length, users });
} catch (err) { next(err); }
});
// GET one
router.get("/:id", async (req, res, next) => {
try {
const user = await User.findById(req.params.id);
if (!user) return res.status(404).json({ error: "User নেই" });
res.json(user);
} catch (err) { next(err); }
});
// POST
router.post("/", async (req, res, next) => {
try {
const user = await User.create(req.body);
res.status(201).json(user);
} catch (err) { next(err); }
});
// PUT
router.put("/:id", async (req, res, next) => {
try {
const user = await User.findByIdAndUpdate(
req.params.id, req.body,
{ new: true, runValidators: true }
);
if (!user) return res.status(404).json({ error: "User নেই" });
res.json(user);
} catch (err) { next(err); }
});
// DELETE
router.delete("/:id", async (req, res, next) => {
try {
const user = await User.findByIdAndDelete(req.params.id);
if (!user) return res.status(404).json({ error: "User নেই" });
res.json({ message: "User মুছে ফেলা হয়েছে" });
} catch (err) { next(err); }
});
module.exports = router;index.jsjavascript
javascript
require("dotenv").config();
const express = require("express");
const connectDB = require("./config/db");
connectDB();
const app = express();
app.use(express.json());
app.use("/api/users", require("./routes/users"));
app.listen(process.env.PORT, () =>
console.log("Server চলছে port:", process.env.PORT)
);MVC Structure
Routes-এ সরাসরি logic না রেখে Controllers ফোল্ডারে business logic রাখুন — model (data) + view/route (HTTP) + controller (logic) — মডার্ন pattern।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।