ORM Prisma — это ORM следующего поколения, который состоит из этих инструментов:
Самый быстрый способ начать работу с Prisma — следовать руководствам по быстрому началу. Вы можете выбрать одну из двух баз данных:
Если у вас уже есть своя база данных, вы можете следовать этим руководствам:
Этот раздел предоставляет общее представление о том, как работает Prisma ORM, и его наиболее важных технических компонентах. Для более подробного введения посетите документацию Prisma.### Схема Prisma
Каждый проект, использующий инструменты из набора инструментов Prisma, начинается с файла схемы Prisma. Схема Prisma позволяет разработчикам определять свои модели приложения на интуитивном языке моделирования данных. Она также содержит соединение с базой данных и определяет генератор:
// Источник данных
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
// Генератор
generator client {
provider = "prisma-client-js"
}
// Модель данных
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}
В этой схеме вы настраиваете три вещи:
На этой странице рассматривается модель данных. Вы можете узнать больше о источниках данных и генераторах на соответствующих страницах документации.
Модель данных представляет собой коллекцию моделей. Модель выполняет две основные функции:- Представляет таблицу в базе данных
Существует два основных рабочих процесса для "получения" модели данных в вашем схеме Prisma:
После определения модели данных вы можете сгенерировать Prisma Client, который будет предоставлять CRUD-запросы и более сложные запросы для определённых моделей. Если вы используете TypeScript, вы получите полную типизацию для всех запросов (даже при извлечении подмножества полей модели).
Первый шаг при использовании Prisma Client — установка его npm-пакета:
npm install @prisma/client
Обратите внимание, что установка этого пакета запускает команду prisma generate
, которая читает вашу схему Prisma и генерирует код Prisma Client. Код будет расположен в node_modules/.prisma/client
, который экспортируется через node_modules/@prisma/client/index.d.ts
.
После изменения вашей модели данных вам потребуется вручную перегенерировать Prisma Client, чтобы убедиться, что код внутри node_modules/.prisma/client
обновлён:```
npx prisma generate
См. документацию для получения дополнительной информации о ["генерации Prisma Client"](https://www.prisma.io/docs/concepts/components/prisma-client/generating-prisma-client).
#### Использование Prisma Client для отправки запросов к вашей базе данных. После генерации Prisma Client вы можете импортировать его в свой код и отправлять запросы к вашей базе данных. Вот как выглядит код установки.
##### Импорт и создание экземпляра Prisma Client
Вы можете импортировать и создать экземпляр Prisma Client следующим образом:
```ts
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
или
const { PrismaClient } = require('@prisma/client')
const prisma = new PrismaClient()
Теперь вы можете начать отправку запросов через сгенерированный API Prisma Client. Вот несколько примеров запросов. Обратите внимание, что все запросы Prisma Client возвращают обычные объекты JavaScript.
Узнайте больше о доступных операциях в документации Prisma Client или посмотрите это демонстрационное видео (2 мин).
User
из базы данныхconst allUsers = await prisma.user.findMany()
posts
для каждого возвращенного объекта User
const allUsers = await prisma.user.findMany({
include: { posts: true },
})
Post
, содержащих "prisma"
const filteredPosts = await prisma.post.findMany({
where: {
OR: [{ title: { contains: 'prisma' } }, { content: { contains: 'prisma' } }],
},
})
```##### Создание новой записи `User` и новой записи `Post` в одном запросе
```ts
const user = await prisma.user.create({
data: {
name: 'Аlice',
email: 'alice@prisma.io',
posts: {
create: { title: 'Присоединяйтесь к нам на Prisma Day 2021' },
},
},
})
Post
const post = await prisma.post.update({
where: { id: 42 },
data: { published: true },
})
Обратите внимание, что при использовании TypeScript результат этого запроса будет статически типизирован, чтобы вы не могли случайно получить доступ к свойству, которое не существует (и любые опечатки будут пойманы во время компиляции). Узнайте больше о том, как использовать сгенерированные типы в документации.
У Prisma есть большое и поддерживаемое сообщество энтузиастов разработки приложений. Вы можете присоединиться к нам на Discord и здесь на GitHub.
Построили что-то впечатляющее с использованием Prisma? 🌟 Покажите это с помощью этих бейджей, идеально подходящих для вашего README или сайта.
[](https://prisma.io)
## MCP сервер
CLI Prisma включает в себя [сервер MCP Prisma](https://www.prisma.io/docs/postgres/mcp-server). Он запускается через эту команду CLI:
npx prisma mcp
Большинство инструментов AI поддерживают конфигурацию на основе JSON для серверов MCP, выглядящую следующим образом:
```json
{
"mcpServers": {
"Prisma": {
"command": "npx",
"args": ["-y", "prisma", "mcp"]
}
}
}
Сервер MCP Prisma позволяет агентам AI управлять базами данных Prisma Postgres (например, запуск новых экземпляров баз данных или выполнение миграций схемы).
Если у вас есть сообщение о проблеме безопасности, пожалуйста, свяжитесь с нами по адресу security@prisma.io.
Вы можете задавать вопросы и начинать обсуждения по темам, связанным с Prisma, в репозитории prisma
на GitHub.
Если вы видите сообщение об ошибке или столкнулись с проблемой, убедитесь, что создали отчет о баге! Вы можете найти лучшие практики для создания отчетов о багах (например, включая дополнительные данные отладки) в документации.
👉 Создать отчет о баге### Предложите новую функцию
Если Prisma в настоящее время не имеет определённой функции, обязательно проверьте дорожную карту, чтобы узнать, планируется ли эта функция в будущем.
Если функция на дорожной карте связана с задачей на GitHub, убедитесь, что оставили реакцию 👍 и, желательно, комментарий со своими мыслями о функции!👉 Подать запрос на новую функцию
См. наши инструкции по вкладу и код поведения для участников.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )