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



我有一个示例类(https://github.com/typestack/class-validator#validation-消息(。我创建了一个函数,该函数应该执行正常验证,或者,如果指定,则执行验证,但如果正在验证的实例中包含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?
}
}
}

我知道当存在非白名单属性时可能会引发错误(https://github.com/typestack/class-validator#whitelisting),但我似乎不知道如果存在字段,如何有条件地使验证失败。这甚至可能在不创建自定义装饰器的情况下实现吗?

有几个选项:

您可以添加一个条件:https://github.com/typestack/class-validator#conditional-验证

@ValidateIf(o => o.otherProperty === "value")
@Equals(undefined)
title: string;

如果您希望它始终未定义:

@Equals(undefined)
title: string;

如果使用class-transformer,可以将其标记为@Excluded,这样无论发送什么值,都不会将其设置为字段。

@Exclude({ toPClassOnly: true })
title: string;

相关内容

  • 没有找到相关文章

最新更新