Realmente não sei pq n funciona, eu tenho um arquivo chamado createBrandSchema.js que é esse de baixo.
import { object, string } from 'zod';
export const createBrandSchema = object({
body: object({
name: string({
required_error: 'Nome da marca é obrigatório',
})
.transform(e => e.replace(/\s+/g, ''))
.pipe(string().min(1, { message: 'required' }).toLowerCase()),
}),
});
E o arquivo validate.js recebe como schema e faz a validações necessárias
import { ZodError } from 'zod';
export const validate = schema => (req, res, next) => {
console.log(req);
try {
schema.safeParse({
params: req.params,
query: req.query,
body: req.body,
});
console.log(req.next().value);
} catch (error) {
if (error instanceof ZodError) {
return res.status(400).json({
status: 'fail',
errors: error.errors,
});
}
next(error);
}
};