Validate class: Ошибка проверки, если поле присутствует - PullRequest
1 голос
/ 20 апреля 2020

У меня есть пример класса (https://github.com/typestack/class-validator#validation -messages ). Я создал функцию, которая должна выполнить обычную проверку или, если указано, выполнить проверку, которая завершится неудачно, если в проверяемый экземпляр включено поле 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), но я не могу понять, как условно завершить проверку при наличии поля. Возможно ли это даже без создания собственного декоратора?

1 Ответ

0 голосов
/ 21 апреля 2020

Существует несколько вариантов:

Вы можете добавить условие: 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;
...