Схема проверки валидатора класса игнорируется - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть класс Post:

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

export class Post {

    @IsString()
    body: strong;

    @IsEmpty()
    title: string;

}

Иногда я хочу проверить экземпляр Post, где title не должно быть пустым. Для этой проверки я создал отдельный файл схемы, postWithTitleSchema.ts, для https://github.com/typestack/class-validator#defining -validation-schema-без-decorators .

import { ValidationSchema } from "class-validator";
export let PostWithTitleSchema: ValidationSchema = {
    name: "postWithTitleSchema",
    properties: {
        title: [{
            type: 'isDefined' 
        }, {
            type: 'isString',
        }]
    }
};

У меня есть другой файл, который использует эти 2 файла следующим образом.

import Post from './post';
import { validate } from 'class-validator';
import { plainToClass } from 'class-transformer';
import { registerSchema } from "class-validator";
import { PostWithTitleSchema } from "./PostWithTitleSchema";

registerSchema(PostWithTitleSchema);
const post: Post = plainToClass(Post, {'body':'post body'});
post.title = 'Required title';
const errors = await validate("postWithTitleSchema", post);

Я не ожидал бы никаких ошибок, учитывая, что заголовок определен и является строкой, определенной схемой экземпляр почты проверяется на соответствие, но при печати errors[0].constraints я получил ошибку по умолчанию @IsEmpty: {"isEmpty": "title must be empty"}. Почему я получаю эту ошибку? Разве валидатор не должен использовать "postWithTitleSchema" для валидации, как я указал?

...