Performance: Validation with Joi
MEDIUM IMPACT
This affects the server response time and initial API request processing speed.
import * as Joi from 'joi'; const schema = Joi.object({ username: Joi.string().min(3).max(30).required(), password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')).required(), email: Joi.string().email().required(), profile: Joi.object({ age: Joi.number().min(0).max(120), bio: Joi.string().max(500) }).required() }); // Validate asynchronously to avoid blocking const result = await schema.validateAsync(request.body);
import * as Joi from 'joi'; const schema = Joi.object({ username: Joi.string().min(3).max(30).required(), password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')).required(), email: Joi.string().email().required(), profile: Joi.object({ age: Joi.number().min(0).max(120), bio: Joi.string().max(500) }).required() }); // Validate on every request synchronously const result = schema.validate(request.body);
| Pattern | CPU Usage | Event Loop Blocking | Response Time Impact | Verdict |
|---|---|---|---|---|
| Synchronous Joi.validate() | High | Yes, blocks event loop | Increases by 10-50ms per request | [X] Bad |
| Asynchronous Joi.validateAsync() | Moderate | No, non-blocking | Minimal impact | [OK] Good |