Валидатор класса nodejs, проверяющий массив объектов

У меня есть массив объектов, который выглядит так

[{
name: 'some name'
catId: 2,
},
{
name: 'another name'
catId: 3,
}]

Как я могу проверить с помощью класса-валидатора так, чтобы поле имени было обязательным и длиной не менее 2 символов в каждом объекте?

Спасибо

1 ответ

Решение

Чтобы проверить массив элементов, вам нужно использовать @ValidateNested({ each: true }),

Полный пример:

import { validate, IsString, MinLength, ValidateNested } from 'class-validator';

class MySubClass {
  @IsString()
  @MinLength(2)
  public name: string;

  constructor(name: string ){
    this.name = name;
  }
}

class WrapperClass {
  @ValidateNested({ each: true })
  public list: MySubClass[];

  constructor(list: MySubClass[]) {
    this.list = list;
  }
}

const subClasses = Array(4)
    .fill(null)
    .map(x => new MySubClass('Test'))

subClasses[2].name = null;

const wrapperClass = new WrapperClass(subClasses);
const validationErrors = await validate(wrapperClass);

Это зарегистрирует ошибку проверки для subClasses[2] как и ожидалось.

Другие вопросы по тегам