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.