Typescript 验证类:如果存在字段,则验证失败

Typescript 验证类:如果存在字段,则验证失败,typescript,validation,class-validator,Typescript,Validation,Class Validator,我有一个示例类()。我创建了一个函数,该函数应该执行正常的验证,或者,如果指定,则执行一个验证,如果要验证的实例中包含title字段,则验证将失败 import {MinLength, MaxLength, validate} from "class-validator"; export class Post { @IsString() body: strong; @IsString() title: string; public async va

我有一个示例类()。我创建了一个函数,该函数应该执行正常的验证,或者,如果指定,则执行一个验证,如果要验证的实例中包含
title
字段,则验证将失败

import {MinLength, MaxLength, validate} from "class-validator";

export class Post {

    @IsString()
    body: strong;

    @IsString()
    title: string;

    public async validatePost(isTitle){
        // if we want the title to be included in the instance, do normal validation
        if(isTitle) {
            validate(this, { forbidUnknownValues: true, validationError: { target: false } });
        }
        // if a title is provided, fail validation
        else {
            // TODO: How can I fail validation if `title` is part of the instance?
        }
    }

}

我知道当存在非白名单属性()时可能会抛出错误,但我似乎不知道如果存在字段,如何有条件地使验证失败。甚至不创建自定义装饰器也可以这样做吗?

有几个选项:

您可以添加一个条件:

@ValidateIf(o=>o.otherProperty==“value”)
@等于(未定义)
标题:字符串;
如果希望它始终未定义:

@Equals(undefined)
title: string;
如果使用
类转换器
,则可以将其标记为
@Excluded
,这样无论发送什么值,都不会将其设置为字段

@Exclude({toPClassOnly:true})
标题:字符串;