У меня есть класс 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" для валидации, как я указал?