Skip to content

Validation

The validation feature in LightTs equips your API with robust input validation using joi. It generates a middleware and schemas to ensure your request data is rock-solid.

  1. Run the Command

    Terminal window
    lts add validation
  2. Generate a Schema

    Terminal window
    lts g validate user
  3. Apply to Routes

    Use the validate middleware in your routes.

src/middleware/validator.middleware.ts
import { BadRequestError } from '@/core/errors/bad-request.error';
import { NextFunction, Request, Response } from 'express';
import Joi from 'joi';
const validate = (schema: Joi.ObjectSchema, content: 'body' | 'params' | 'query' = 'body') => {
return async (req: Request, res: Response, next: NextFunction) => {
const data = content == 'body' ? req.body : content == 'params' ? req.params : req.query;
const valid = schema.validate(data);
if (valid.error) {
var error = valid.error.details[0].message.replace(/"/g, '');
throw new BadRequestError(error);
}
return next();
};
};
export default validate;
src/modules/user/user.service.ts
import { DataResponse } from '@/core/responses/data.response';
import { Request, Response } from 'express';
export default {
get: async (req: Request, res: Response) => {
const { email } = req.body;
return new DataResponse(res, {
data: { id: 1, email },
message: 'Sign-in successful',
statusCode: 200,
});
},
}
  • Validates req.body against Joi schemas.
  • Customize schemas in user.schema.ts for advanced rules.
  • Errors return a 400 status with clear messages.