【问题标题】:NestJS DTO class set class-validator and class-transformer execution orderNestJS DTO 类设置 class-validator 和 class-transformer 执行顺序
【发布时间】:2021-11-04 03:46:06
【问题描述】:

在使用class-validatorclass-transformer 包描述NestJS 中的DTO 类时,有没有办法设置装饰器的执行顺序

foo 的值设置为null 时,以下代码将失败并出现错误:

需要一个字符串,但收到一个空值

@IsOptional()
@IsString()
@IsByteLength(1, 2048)
@Transform(({ value }) => validator.trim(value))
@Transform(({ value }) => validator.stripLow(value))
foo: string;

即使我有一个 isString 装饰器,它应该检查是否确实传递了一个字符串,并且必须已经无法不将执行传递给 @Transform 装饰器,但它没有失败。

【问题讨论】:

    标签: typescript nestjs decorator class-validator class-transformer


    【解决方案1】:

    Class-Validator 基于类工作。进入服务器的请求负载只是简单的 JSON 对象。为了改变这种行为,如果你使用的是它的ValidationPipe,Nest 必须首先从class-validator 调用plainToClass。因此,@Transform() 装饰器优先于其他类验证器装饰器,并首先被执行。您可以通过使用多个管道来解决此问题,或者可以为 @Transform() 装饰器提供默认值,但所发生的是预期的效果。

    【讨论】:

      猜你喜欢
      • 2023-01-10
      • 2019-06-27
      • 1970-01-01
      • 2020-03-09
      • 2020-10-18
      • 1970-01-01
      • 2020-06-01
      • 2021-12-16
      • 2019-11-30
      相关资源
      最近更新 更多