arb / celebrate

A joi validation middleware for Express.
MIT License
1.33k stars 66 forks source link

Nested schema error #248

Closed Pos-cmd closed 3 months ago

Pos-cmd commented 6 months ago

My joi schema looks like this:

`export const fetchUsersValidation = {

sort: Joi.array().items(Joi.string().allow(null)).valid('firstname', 'lastname', 'createdAt', '-firstname', '-lastname', '-createdAt'), // Allow null values for optional sorting
filters: Joi.object().valid({
  type: Joi.number().valid(UserType), // Validate allowed types
  role: Joi.number() // Validate allowed roles
}),
pagination: Joi.object({
  page: Joi.number().integer().positive().default(1), // Ensure positive integer, default to 1
  pageSize: Joi.number().integer().min(1).max(100).default(15) // Set limits and default
})

}) };`

Here is an example value that is not working as expected:

{{base_url}}/api/users/?filters[type]=1

The issue I am having with celebrate is: "message": "\"filters\" must be [[object Object]]; ", I create the error handler like this: app.use((err: any, _req: Request, res: Response, _next: NextFunction) => { if (isCelebrateError(err)) { let message = ''; for (const value of err.details.values()) { message += value.message + '; '; } logger.error('🔥 error %o', message); res.status(httpStatus.BAD_REQUEST).json(resultError(message)); } }) but i have error for the nested joi schema. I think i do it in the wrong way.

stale[bot] commented 4 months ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.