MongoDBIntermediate
Error Handling
ValidationError, CastError, duplicate key — চেনা ও সঠিকভাবে handle করা — বাংলায়।
9টি অংশবাংলা ভাষায়
Mongoose-এর সাধারণ error
| Error | যখন ঘটে | কী করবেন |
|---|---|---|
ValidationError | schema validation ব্যর্থ | field-ভিত্তিক message দেখান |
CastError | ভুল ObjectId/type দেওয়া | Invalid ID response দিন |
MongoServerError | unique conflict (code 11000) | duplicate হিসেবে handle |
MongooseError (buffer) | disconnected অবস্থায় query | connection নিশ্চিত করুন |
Async handler
try/catch wrapperjs
js
async function getPost(req, res) {
try {
const post = await Post.findById(req.params.id);
if (!post) {
return res.status(404).json({ message: "Post পাওয়া যায়নি" });
}
res.json(post);
} catch (err) {
// mongoose-এর ভুল ID → CastError
if (err.name === "CastError") {
return res.status(400).json({ message: "Invalid id" });
}
console.error(err);
res.status(500).json({ message: "Something went wrong" });
}
}Duplicate key
Unique conflict (11000)js
js
try {
await User.create({ email: "rahim@example.com" });
} catch (err) {
if (err.code === 11000) {
return res.status(409).json({
message: "এই email-এ একটি অ্যাকাউন্ট ইতিমধ্যে আছে",
});
}
throw err;
}Global error middleware (Express)
Central error handlerjs
js
app.use((err, req, res, next) => {
if (err.name === "ValidationError") {
const errors = Object.fromEntries(
Object.entries(err.errors).map(([key, e]) => [key, e.message])
);
return res.status(400).json({ message: "Validation failed", errors });
}
res.status(err.statusCode || 500).json({
message: err.message || "Internal server error",
});
});Error handler আগে পড়ুন
Async function-এ throw করা error Express-এ স্বয়ংক্রিয় ধরা পড়ে না (Express 4-এ) — প্রতিটি route-কে try/catch বা wrapper দিয়ে cover করুন (Express 5-এ async error-ও ধরা পড়ে)।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।