Изменить свойства DTO с помощью декоратора - PullRequest
0 голосов
/ 04 марта 2020
export class MyDto extends Base{
@ApiModelProperty()
@Expose()
@MyCustomModifier()
readonly code: string = "";



MyCustomModifier(){
   // modify 
    code = someUpdateOnCode()
}

Можем ли мы сделать что-то подобное, чтобы мы могли обновить свойства dto

1 Ответ

0 голосов
/ 09 марта 2020
@Injectable()
export class JoiValidationPipe implements PipeTransform {
  constructor(private readonly schema) {}

  transform(value: any, metadata: ArgumentMetadata) {
    const { error } = this.schema.validate(value);
    if (error) {
      console.log(error, 'error');
      throw new BadRequestException(error.message);
    }
    // some changing value.code = someUpdateOnCode()
    return value;
  }
}

и используйте свою трубу вот так

import * as Joi from '@hapi/joi';
@Put('')
@UsePipes(
    new JoiValidationPipe(
        Joi.object().keys({
            code: Joi.string()
                .min(3)
                .max(250)
                .allow('')
                .optional()
        )
    })
  async someControler(){}
...