“Express Class Validator” Ответ

Express Class Validator

// using like this 
// this.router.post('/register', [validator(DTORegister)], this.registerUsersController)

import { validate, ValidationError } from 'class-validator'
import { StatusCodes as status } from 'http-status-codes'
import { Request, Response, NextFunction } from 'express'
import { OutgoingMessage } from 'http'

import { apiResponse } from '@helpers/helper.apiResponse'

export function validator(DataTransferObject: any) {
  return async function (req: Request, res: Response, next: NextFunction): Promise<OutgoingMessage> {
    const errors: ValidationError[] = await validate(Object.assign(new DataTransferObject(), req.body))
    const errorMessage = errors.map((val: ValidationError) => {
      return apiResponse(400, Object.values(val.constraints)[0])
    })

    if (errorMessage.length) {
      return res.status(status.BAD_REQUEST).json(errorMessage)
    }
    next()
  }
}
Restu Wahyu Saputra

Express Class Validator

import { validate, ValidationError } from 'class-validator'
import { ClassConstructor, plainToClass } from 'class-transformer'
import { StatusCodes as status } from 'http-status-codes'
import { Request, Response, NextFunction } from 'express'
import { OutgoingMessage } from 'http'

import { apiResponse } from '@helpers/helper.apiResponse'

export function validator(MetaType: ClassConstructor<any>) {
  return async function (req: Request, res: Response, next: NextFunction): Promise<OutgoingMessage> {
    let property: Record<string, any> = {}
    Object.assign(property, req.body, req.params, req.query)

    const object: Record<string, any> = plainToClass(MetaType, property)
    const errorsResponse: ValidationError[] = await validate(object)

    const errorMessage = errorsResponse.map((val: ValidationError) => apiResponse(400, Object.values(val.constraints)[0]))
    if (errorMessage.length) {
      return res.status(status.BAD_REQUEST).json({ errors: errorMessage })
    }
    next()
  }
}
Restu Wahyu Saputra

Express Class Validator

// using like this 
// this.router.post('/register', [validator([DTORegister])], this.registerUsersController)

export function validator(DataTransferObject: any) {
  return async function (req: Request, res: Response, next: NextFunction): Promise<OutgoingMessage> {
    let errors: any = []

    DataTransferObject.forEach(async (DTO: any) => {
      const property: Record<string, any> = {}
      Object.assign(property, req.body, req.params, req.query)
      const errorsResponse: ValidationError[] = await validate(Object.assign(new DTO(), property))
      errors.push(errorsResponse)
    })

    const errorMessage = errors.map((val: ValidationError) => apiResponse(400, Object.values(val.constraints)[0]))
    if (errorMessage.length) {
      return res.status(status.BAD_REQUEST).json(errorMessage)
    }
    next()
  }
}
Restu Wahyu Saputra

Ответы похожие на “Express Class Validator”

Вопросы похожие на “Express Class Validator”

Больше похожих ответов на “Express Class Validator” по TypeScript

Смотреть популярные ответы по языку

Смотреть другие языки программирования