Расширенные условия с помощью класса-валидатора (возможно)? - PullRequest
1 голос
/ 14 февраля 2020

У меня есть проект TypeScript Nest JS.

Мне нужно проверить входящий DTO для моего API. Это можно описать как «создание проекта», где у нас есть тип здания (Дом, Квартира, Сад), и в зависимости от этого типа мы должны определить:

  • Дом: ПОЛЫ, включая КОМНАТЫ
  • Квартира: НОМЕРА
  • Сад: ничего (это одна "комната")

Пример типа дома:

{
  type: HOUSE,
  floors: [
    {
      name: "1st floor",
      rooms: [
        {
          name: "bedroom"
        }
      ]
    }
  ]
}

Пример типа квартиры :

{
  type: FLAT,
  rooms: [
    {
      name: "bedroom"
    }
  ]
}

В прошлом я делал это с помощью AJV, но теперь, когда мы мигрировали в Nest JS, мы начали использовать class-validator.

Мой вопрос если я могу сделать эти расширенные условия (например, когда тип FLAT, то ожидать только ROOMS, но не FLOORS) в class-validator?

1 Ответ

0 голосов
/ 14 февраля 2020

С class-validator у вас есть опции Условная проверка и Проверка группы , или вы всегда можете создать пользовательский канал и использовать AJV, как вы привыкли. Для условной проверки вы можете создать проверки на основе type, а затем позволить класс-валидатору позаботиться об остальном

...