NestJS — это платформа для создания масштабируемых серверных приложений Node.js. Он использует современный JavaScript, полностью поддерживает и построен с использованием TypeScript и сочетает в себе элементы объектно-ориентированного, функционального и функционального реактивного программирования.

В этом посте будет показано, как использовать Nest и Prisma для создания REST API. Вот что мы рассмотрим:

  • Что такое Призма
  • Для чего используется Призма
  • Первоначальная настройка проекта
  • Начало работы с Призмой
  • Подключение к базе данных
  • Создание схемы базы данных
  • Настройка клиента Prisma и службы Prisma
  • Генерация модуля todo
  • Тестирование нашего приложения

Что такое Prisma?

Prisma — это объектно-реляционный преобразователь (ORM) Node и TypeScript следующего поколения. Он предоставляет набор инструментов базы данных с открытым исходным кодом для PostgreSQL, MySQL, SQL Server, SQLite и MongoDB (в настоящее время в предварительной версии), что позволяет разработчикам создавать приложения быстрее и с меньшим количеством ошибок.

Prisma предоставляет вам декларативный метод для определения моделей данных и отношений вашего приложения в более разборчивом формате. Кроме того, если у вас уже есть база данных, вам не нужно создавать модели базы данных с нуля, потому что функции самоанализа Prisma справятся с этим за вас — настолько они гибкие.

Для чего используется Prisma?

Prisma повышает безопасность типов, упрощая доступ к базе данных, сохраняя и сокращая количество повторяющихся шаблонов CRUD. Prisma легко интегрируется в предпочитаемую вами структуру и является идеальным набором инструментов базы данных для создания надежных и масштабируемых веб-API. Prisma быстро интегрируется с различными фреймворками, такими как GraphQL, Next.js, Nest, Apollo и Express.js.

Prisma устраняет многие недостатки традиционных ORM, такие как отсутствие безопасности типов, смешанная бизнес-логика и логика хранения, а также непредсказуемые запросы, вызванные отложенной загрузкой.

Первоначальная настройка проекта

Чтобы начать работу с этим руководством, убедитесь, что у вас есть:

  • Node.js (≥v10.13.0, кроме v13) установлен
  • Почтальон установлен

Прежде чем мы начнем создавать приложение Nest, вам необходимо установить интерфейс командной строки Nest с помощью следующей команды:

npm i -g @nestjs/cli

Дождитесь окончания установки. После завершения установки создайте новое приложение Nest с помощью следующей команды:

nest new prisma-api

Выберите npm в качестве предпочтительного менеджера пакетов и нажмите Enter. Приложение пройдет несколько процессов установки.

После того, как npm установит все пакеты, необходимые для запуска приложения, измените каталог на папку проекта и запустите сервер с помощью следующей команды:

npm run start:dev

Начало работы с Prisma

В этом руководстве используется Prisma v3.11.0. Установите Prisma CLI в качестве зависимости разработки с помощью следующей команды:

npm install prisma -save-dev

После завершения установки локально вызовите CLI Prisma с помощью npx с помощью следующей команды:

npx prisma

Теперь создайте первоначальную настройку Prisma с помощью команды Prisma init:

npx prisma init

Приведенная выше команда создает новый каталог Prisma со следующими файлами:

  • schema.prisma: указывает подключение к базе данных и содержит схему базы данных.
  • .env: файл dotenv, обычно используемый для хранения учетных данных вашей базы данных в группе переменных среды.

Подключение к базе данных

С установленной Prisma установка на вашем компьютере довольно проста. Для демонстрации в этом руководстве мы подключимся к базе данных PostgreSQL. Для начала откройте файл datasource/schema.prisma и обновите содержимое с помощью приведенного ниже кода:

В приведенном выше фрагменте мы указали PostgreSQL в качестве нашего поставщика базы данных. Теперь измените файл .env, чтобы указать расположение файла базы данных.

DATABASE_URL=”postgresql://username:password@host:port/database_name?schema=public”

Создание схемы базы данных

Теперь, когда соединение с базой данных настроено, вы можете создавать таблицы базы данных, определяя схему в файле schema.prisma. Для демонстрации в этом руководстве мы определим схему Todo с кодом ниже:

Создайте файлы миграции PostgreSQL и запустите их в базе данных с помощью следующей команды:

npx prisma migrate dev -name init

Настройка Prisma Client и Prisma Service

Prisma Client — это типобезопасный клиент базы данных, созданный на основе определения вашей модели Prisma. Он предоставляет операции CRUD, адаптированные специально для ваших моделей.

Установите клиент Prisma с помощью следующей команды:

npm install @prisma/client

Настроив Prisma Client, создайте файл prisma.service в папке src, чтобы абстрагироваться от клиентского API Prisma для запросов к базе данных в службе с помощью кода ниже:

В приведенном выше коде мы создали новый PrismaService, который обеспечивает создание экземпляра PrismaClient и подключение к вашей базе данных.

Создание модуля todo

Настроив службу Prisma, сгенерируйте модуль todo для всей логики todo с помощью команды ниже:

nest generate module todo

Затем создайте служебный файл для пользовательского модуля с помощью следующей команды:

nest generate service todo

Затем обновите содержимое файла todo.service с помощью приведенного ниже кода:

В приведенном выше коде мы создали все операции CRUD для нашего пользовательского сервиса.

Теперь создайте контроллер todo для определения всех маршрутов API для пользовательского сервиса с помощью следующей команды:

nest generate controller todo

Обновите содержимое файла todo.controller.ts с помощью приведенного ниже кода:

Откройте файл todo.module.ts, импортируйте PrismaService и добавьте его в массив поставщиков с помощью приведенного ниже кода:

На данный момент вы успешно создали REST API Nest Prisma! Теперь давайте протестируем приложение с помощью Postman.

Тестирование нашего приложения

Создав все маршруты API для демонстрационного приложения, запустите Postman и протестируйте конечные точки.

Добавить маршрут todo:

Получить маршрут:

Заключение
Надеемся, что этот небольшой пост поможет вам во многих распространенных сценариях во время разработки вашего приложения с помощью NestJS с использованием Prisma.