celebrate icon indicating copy to clipboard operation
celebrate copied to clipboard

Nested schema error

Open Pos-cmd opened this issue 2 months ago • 1 comments

  • node version - 18
  • celebrate version - 15.0.3
  • joi version (via npm ls --depth=0 | grep joi) -17

My joi schema looks like this:

export const fetchUsersValidation = { [Segments.QUERY]: Joi.object<QueryOptions>().keys({ 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. *

Pos-cmd avatar Mar 16 '24 07:03 Pos-cmd