Files
FullstackEcommerce/api/src/middlewares/validationMiddleware.ts
2025-07-06 22:38:21 +09:00

20 lines
663 B
TypeScript

import { Request, Response, NextFunction } from 'express';
import { z, ZodError } from 'zod';
export function validateData(schema: z.ZodObject<any, any>) {
return (req: Request, res: Response, next: NextFunction) => {
try {
schema.parse(req.body);
next();
} catch (error) {
if (error instanceof ZodError) {
const errorMessages = error.errors.map((issue: any) => ({
message: `${issue.path.join('.')} is ${issue.message}`,
}));
res.status(400).json({ error: 'Invalid data', details: errorMessages });
} else {
res.status(500).json({ error: 'Internal Server Error' });
}
}
};
}