Краткое руководство • Веб-сайт • Документы • Примеры • Блог • Discord • Twitter
Prisma ORM — это ORM следующего поколения , который состоит из следующих инструментов:
Prisma Client : автоматически создаваемый и типобезопасный построитель запросов для Node.js и TypeScript.
Prisma Migrate : система декларативного моделирования данных и миграции
Prisma Studio : графический интерфейс для просмотра и редактирования данных в вашей базе данных.
Клиент Prisma можно использовать в любом серверном приложении Node.js или TypeScript (включая бессерверные приложения и микросервисы). Это может быть REST API, GraphQL API, gRPC API или что-то еще, для чего нужна база данных.
Если вам нужна база данных для использования с Prisma ORM, воспользуйтесь Prisma Postgres.
Prisma ORM может быть дополнительно расширена за счет следующих продуктов Prisma:
Prisma Accelerate: глобальный кеш базы данных с масштабируемым пулом соединений.
Prisma Pulse: события базы данных в реальном времени с типобезопасными подписками.
Prisma Optimize: оптимизация запросов на основе искусственного интеллекта и анализ производительности
Prisma Studio: визуальный редактор данных в вашей базе данных.
Самый быстрый способ начать работу с Prisma — следовать кратким руководствам. Вы можете выбрать любую из двух баз данных:
Призма Постгрес
SQLite
Если у вас уже есть собственная база данных, вы можете следовать этим руководствам:
Добавьте Prisma в существующий проект
Создайте новый проект с Prisma с нуля.
В этом разделе представлен общий обзор того, как работает Prisma ORM, и ее наиболее важные технические компоненты. Для более подробной информации посетите документацию Prisma.
Каждый проект, в котором используется инструмент из набора инструментов Prisma, начинается с файла схемы Prisma. Схема Prisma позволяет разработчикам определять модели своих приложений на интуитивно понятном языке моделирования данных. Он также содержит подключение к базе данных и определяет генератор :
// Источник данныхdatasource db { поставщик = "postgresql" url = env("DATABASE_URL")}// Генераторгенератор клиент { поставщик = "prisma-client-js"}// Модель модели данных Post { id Int @id @default(autoincrement( )) title String content String? опубликовано логическое значение @default(false) автор Пользователь? @relation(поля: [authorId], ссылки: [id])authorId Int?}model User { id Int @id @default(autoincrement()) email String @unique name String? сообщения Сообщение[]}
В этой схеме вы настраиваете три вещи:
Источник данных : указывает подключение к базе данных (через переменную среды).
Генератор : указывает, что вы хотите создать клиент Prisma.
Модель данных : определяет модели вашего приложения.
На этой странице основное внимание уделяется модели данных. Вы можете узнать больше об источниках данных и генераторах на соответствующих страницах документации.
Модель данных представляет собой набор моделей. Модель выполняет две основные функции:
Представлять таблицу в базовой базе данных
Обеспечьте основу для запросов в клиентском API Prisma.
Существует два основных рабочих процесса для «вставки» модели данных в вашу схему Prisma:
Создайте модель данных на основе анализа базы данных.
Написание модели данных вручную и сопоставление ее с базой данных с помощью Prisma Migrate.
После определения модели данных вы можете создать клиент Prisma, который будет предоставлять CRUD и другие запросы для определенных моделей. Если вы используете TypeScript, вы получите полную безопасность типов для всех запросов (даже при получении только подмножества полей модели).
Первым шагом при использовании Prisma Client является установка пакета npm:
npm install @prisma/client
Обратите внимание, что установка этого пакета вызывает команду prisma generate
, которая считывает вашу схему Prisma и генерирует код клиента Prisma. Код будет расположен в node_modules/.prisma/client
, который экспортируется node_modules/@prisma/client/index.d.ts
.
После изменения модели данных вам потребуется вручную повторно создать клиент Prisma, чтобы обеспечить обновление кода внутри node_modules/.prisma/client
:
npx prisma generate
Обратитесь к документации для получения дополнительной информации о «создании клиента Prisma».
После создания клиента Prisma вы можете импортировать его в свой код и отправлять запросы в свою базу данных. Вот как выглядит код установки.
Вы можете импортировать и создать экземпляр клиента Prisma следующим образом:
import { PrismaClient } из '@prisma/client'const prisma = new PrismaClient()
или
const { PrismaClient } = require('@prisma/client')const prisma = new PrismaClient()
Теперь вы можете начать отправлять запросы через сгенерированный клиентский API Prisma. Вот несколько примеров запросов. Обратите внимание, что все запросы клиента Prisma возвращают старые добрые объекты JavaScript .
Узнайте больше о доступных операциях в документации Prisma Client или посмотрите это демонстрационное видео (2 минуты).
User
из базы данных// Запуск внутри `async` functionconst allUsers = await prisma.user.findMany()
posts
для каждого возвращаемого объекта User
// Запуск внутри `async` functionconst allUsers = await prisma.user.findMany({include: {posts: true },})
Post
, содержащие "prisma"
// Запуск внутри `async` functionconst filteredPosts = await prisma.post.findMany({ где: { ИЛИ: [{ title: { содержит: 'prisma' } }, { content: { содержит: 'prisma' } }], } ,})
User
и новую запись Post
в том же запросе.// Запуск внутри `async` functionconst user = await prisma.user.create({ data: { name: 'Alice', email: '[email protected]', messages: { create: { title: 'Присоединяйтесь к нам для Prisma День 2021' }, }, },})
Post
// Запуск внутри `async` functionconst post = await prisma.post.update({where: { id: 42 }, data: {Published: true },})
Обратите внимание: при использовании TypeScript результат этого запроса будет статически типизирован , так что вы не сможете случайно получить доступ к несуществующему свойству (а любые опечатки обнаруживаются во время компиляции). Узнайте больше об использовании сгенерированных типов Prisma Client на странице «Расширенное использование сгенерированных типов» в документации.
Prisma имеет большое и поддерживающее сообщество разработчиков приложений-энтузиастов. Вы можете присоединиться к нам в Discord и здесь, на GitHub.
Создали что-то потрясающее с помощью Prisma? ? Покажите это с помощью этих значков, которые идеально подходят для вашего файла readme или веб-сайта.
[![Made with Prisma](http://made-with.prisma.io/dark.svg)](https://prisma.io)
[![Made with Prisma](http://made-with.prisma.io/indigo.svg)](https://prisma.io)
Если у вас есть проблема с безопасностью, о которой необходимо сообщить, свяжитесь с нами по адресу [email protected].
Вы можете задавать вопросы и инициировать обсуждения тем, связанных с Prisma, в репозитории prisma
на GitHub.
? Задать вопрос
Если вы видите сообщение об ошибке или столкнулись с проблемой, обязательно создайте отчет об ошибке! Рекомендации по созданию отчетов об ошибках (например, включение дополнительных результатов отладки) можно найти в документации.
? Создать отчет об ошибке
Если в Prisma в настоящее время нет определенной функции, обязательно ознакомьтесь с дорожной картой, чтобы узнать, запланировано ли это уже на будущее.
Если функция в плане связана с проблемой GitHub, обязательно оставьте знак ? реакция на проблему и, в идеале, комментарий с вашими мыслями по поводу этой функции!
? Отправить запрос на добавление функции
Ознакомьтесь с нашими правилами внесения вкладов и Кодексом поведения для участников.
Статус тестов Prisma:
Статус экосистемных тестов: