WedX - журнал о программировании и компьютерных науках

Как использовать один маршрут с несколькими dto на Nestjs?

В настоящее время я использую NestJS для создания спокойного api. У меня ValidationPipe проблема. он работает только с методом контроллера и не работает с методами обслуживания.

Мне нужно сделать выбор для разных DTO классов (UserCreateDTO, _4 _, ...) для каждого ROLE (администратор, персонал, пользователь) на route.


  • Вы можете привести пример кода? 07.01.2019
  • Проблемы все еще возникают? 11.02.2019

Ответы:


1

Трубы работают только на контроллерах, вы не можете использовать их со службами. Но вместо этого вы можете просто использовать метод validate валидатора класса (вместе с методом plainToClass преобразователя классов) в любом месте вашего кода:

const user = plainToClass(UserCreateDto, userRequestEntity);
const errors = await validate(user)
if (errors.length > 0) {
  throw this.createError(errors);
}

Кроме того, вам не нужно создавать несколько классов DTO для разных ролей. Просто используйте class-validator группы:

Назначьте каждое свойство в вашем DTO одной или нескольким группам (= ролям):

@Min(12, {groups: ['admin', 'staff']})
age: number;
@Length(2, 20, {groups: ['admin']})
name: string;

Затем передайте свою группу (роли) в plainToClass и validate.

// Pass your roles as groups
const groups = ['admin'];

// Transform to class with groups
const entityClass = plainToClass(EntityDto, entity, { groups })

// Validate with groups
const errors = await validate(entityClass, { groups });
07.01.2019
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]