Как стать автором
Обновить

Комментарии 9

Как по мне, призму и иные внутренние штуки не очень выносить в контроллер. Я бы это всё оставлял внутри сервисов, с которыми контроллер работает, и сами сервисы возвращают преобразованные объекты из базы.

Согласен. Более того, я бы вынес именно запросы к БД в *.repository.ts, в сервисе оставил логику + обращение к базе через репозитории, а в контроллер только для того, чтобы связать эндпоинт и нужный метод из сервиса

Можно вопрос немного "в сторону". Мне тут (совсем не программисту) надо сделать прототип REST приложения. Можно сказать MVP для демонстрации партнеру. Вроде не сложно, куча примеров НО! Во всех найденных примерах всегда добавляется один объект. Один пост, одна статья, один юзер. В том же nestjs под это вся валидация из коробки. Понятно что это под web-frontend. У меня же скорее интерфейс к другой системе и партнер хочет сразу пачкой объекты загружать. А таких примеров реализации в лоб я не нахожу. Это плохой тон? Или есть объективные причины (типа сложной валидации) почему так не делают? Или еще что-то?

Для создания, обновления и удаления нескольких записей в одной транзакции Prisma предоставляет такие методы, как createMany, updateMany и deleteMany, соответственно. Особенность этих методов (транзакции) состоит в том, что если хотя бы один объект в массиве окажется невалидным, операция провалится (ни один объект не будет записан etc.). Но если позаботиться о валидации заранее, то все получится) Совсем не программисту я бы не советовал начинать с NestJS, Prisma и TypeScript. Простой REST API, пожалуй, легче всего реализовать с помощью Express + Mongoose (для демонстрации хватит кластера в MongoDB Atlas).

Prisma же уже в БД пишет. Мне бы пример как через REST не один объект загрузить, а пачку.

В post запросе в body передать массив объектов

Это понятно. Вопрос почему никто таких примеров в статьях не дает. Чтобы просто скопипастить проект и допилить под свою схему данных :-) Т.е. никаких подводных камней в этом нет и просто все считают не нужным показывать такие примеры?

Никаких подводных камней. В боди в примерах обычно передается JSON с одним объектом. Массив тоже является легальной структурой, которую можно перевести в JSON на равне с объектом (не зря же Array "наследник" от Object). Так что разницы никакой нет и всё у тебя пройдет как по маслу

Если подводный камень при использовании Prisma + Swagger. Если хотите Code-first документировать модели в сваггере, то у вас ничего не получится, так как призма внутри себя генерит типы в виде `type` (typescript). Тут либо танцы с тайпскриптом, либо танцы со сваггером. Но в целом, если нужно сделать нечто простое, то призма - более чем хороша.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий