Как использовать валидатор классов и преобразователь классов вnesjs
Как использовать валидатор классов и преобразователь классов вnesjs

Предыдущие две статьи представлены соответственноclass-validatorиИспользование класса-трансформера,Далее давайте поговорим о том, как использовать эти два пакета вnesjs.

Nest.js поставляется с проверкой данных и тремя готовыми конвейерами: ValidationPipe, ParseIntPipe и ParseUUIDPipe, и класс-валидатор может идеально достичь желаемого эффекта (проверка типов параметров, проверка исключения).

Операции проверки конвейера обычно используются в файлах транспортного уровня, таких как dto, для операций проверки. Сначала мы устанавливаем два необходимых пакета зависимостей: class-transformer и class-validator.

Язык кода:bash
копировать
npm install class-validator class-transformer -S

Затем добавьте проверку в файл xxxx.dto.ts и улучшите сообщение об ошибке:

Язык кода:ts
копировать
import { IsNotEmpty, IsNumber, IsString } from 'class-validator';

export class CreatePostDto {
  @ApiProperty({ description: «Название статьи» })
  @IsNotEmpty({ message: «Требуется название статьи» })
  readonly title: string;

  @IsNotEmpty({ message: «Отсутствует информация об авторе» })
  @ApiProperty({ description: 'автор' })
  readonly author: string;

  @ApiPropertyOptional({ description: 'содержание' })
  readonly content: string;

  @ApiPropertyOptional({ description: «Обложка статьи» })
  readonly cover_url: string;

  @IsNumber()
  @ApiProperty({ description: «Тип статьи» })
  readonly type: number;
}

Настройте объект DTO в маршруте:

Язык кода:ts
копировать

@controller()
class etesxcontroller{
    @post()
     hello(@body(new testpipe()) post:CreatePostDto){}
     
     //testpipe Значением входного параметра является dto, которое может изменять значение dto.
     
}

Наконец, у нас есть еще один важный шаг — глобальная регистрация конвейера ValidationPipe в main.ts:

Язык кода:ts
копировать
app.useGlobalPipes(new ValidationPipe());

Этапы обработки ValidationPipe:

  1. Сначала переданный обычный объект преобразуется в экземпляр класса dto с помощью функции PlainToClass пакета class-transformer.
  2. Полученный экземпляр dto будет проверен с помощью функции validate пакета class-validator. Функция validate также соответствующим образом обработает экземпляр dto (например, если установлен белый список, атрибуты, не декорированные декоратором class-Validator, будут обработаны). удалено)
  3. Снова преобразуйте этот экземпляр dto в обычный объект с помощью функции classToPlain пакета class-transformer.
  4. Метод контроллера получает соответствующие параметры

Конечно, это negjs с использованием class-validator и Calss-Transformer с помощью ValidationPipe. Мы также можем настроить канал для использования этих двух пакетов.

Вышеупомянутое использовать валидатор классов и преобразователь классов вnesjs, надеюсь, это поможет.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода