UNPKG

tranxpress

Version:

A smart async wrapper for Express with MongoDB transaction support.

68 lines (59 loc) 2.02 kB
// src/errors/MongoErrorHandler.ts export class MongoHandledError extends Error { public statusCode: number; public originalError: any; constructor(error: any) { let message = "An unexpected MongoDB error occurred"; let statusCode = 500; switch (error.name) { case "ValidationError": message = "Validation failed"; statusCode = 400; break; case "CastError": message = `Invalid value for '${error.path}': ${error.value}`; statusCode = 400; break; case "MongoServerError": if (error.code === 11000) { const field = Object.keys(error.keyPattern || {})[0]; message = `Duplicate key error on field '${field}'`; statusCode = 409; } break; case "MongoError": switch (error.code) { case 50: message = "Exceeded time limit — try again later"; statusCode = 503; break; case 11600: message = "Operation interrupted — possible replica set issue"; statusCode = 503; break; case 121: message = "Document validation failed"; statusCode = 422; break; case 26: message = "Collection not found"; statusCode = 404; break; default: message = error.message || message; } break; } super(message); this.statusCode = statusCode; this.originalError = error; if (process.env.NODE_ENV === "development") { console.error("🧩 Mongo Error Debug Info:"); console.error("🧬 Name:", error.name); console.error("🔢 Code:", error.code); console.error("📍 Path:", error.path); console.error("🧠 Reason:", error.reason); console.error("📜 Stack:", error.stack); } } }