【问题标题】:Conditionally failing validation using class-validator使用类验证器有条件地失败验证
【发布时间】:2021-05-25 02:10:17
【问题描述】:

class-validation 库中使用conditional validation 和下面的示例,如果woodScrews 属性在tool 属性为Tool.TapeMeasure 时被赋予一个值,我希望验证失败。我真的找不到任何可以做到这一点的东西。

import { IsEnum, IsNumber, Min, ValidateIf } from 'class-validator'

export enum Tool {
  Drill = 'Drill',
  TapeMeasure = 'Tape Measure'
}

export class ToolBox {
  @IsEnum(Tool)
  public tool: Tool;

  @ValidateIf(toolBox => toolBox.tool === Tool.Drill)
  @IsNumber()
  @Min(5)
  public woodScrews?: number;
}

【问题讨论】:

    标签: javascript node.js typescript nestjs class-validator


    【解决方案1】:

    该方法仅适用于忽略验证,即使用您的 dto,您验证类 ToolBox 具有类型为 number 的属性 woodScrews 并且仅当属性 Tool 等于 Drill 时,其最小值为 5,否则您将忽略验证。

    我不确定您是否可以使用类验证器解决此问题,但您可以创建一些自定义管道并应用您自己的逻辑。

    更多信息在这里:https://docs.nestjs.com/pipes

    【讨论】:

    • 害怕我必须自己实现,希望能开箱即用。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2015-09-05
    相关资源
    最近更新 更多