главная/Prisma ORM основы, с примерами кода
Prisma ORM

Prisma ORM основы, с примерами кода

Prisma – это современный инструмент для работы с базами данных, предназначенный для языков JavaScript и TypeScript.

Он обеспечивает удобный и безопасный доступ к данным, автоматическое создание схемы базы данных и генерацию типизированного API для работы с данными.

Prisma поддерживает различные базы данных, такие как PostgreSQL, MySQL, SQLite и др.

Установка Prisma

Чтобы начать использовать Prisma, сначала установите его в своем проекте:

npm install prisma --save-dev
npm install @prisma/client

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

Создайте файл prisma/schema.prisma со следующим содержимым:

datasource db {
  provider = "postgresql"
  url      = "postgresql://user:password@localhost:5432/mydb"
}

generator client {
  provider = "prisma-client-js"
}

model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  name      String?
  posts     Post[]
}

model Post {
  id        Int      @id @default(autoincrement())
  title     String
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id])
  authorId  Int
}

В этом примере определены две модели: User и Post, которые будут соответствовать таблицам в базе данных. Не забудьте заменить строку подключения к базе данных на вашу.

Генерация клиента Prisma

Запустите следующую команду, чтобы сгенерировать клиент:

npx prisma generate

Использование клиента

Создайте файл index.js и добавьте следующий код:

const { PrismaClient } = require('@prisma/client');

async function main() {
  const prisma = new PrismaClient();

  // Создание нового пользователя
  const newUser = await prisma.user.create({
    data: {
      email: 'example@example.com',
      name: 'Example User',
    },
  });
  console.log('Created user:', newUser);

  // Получение всех пользователей
  const allUsers = await prisma.user.findMany();
  console.log('All users:', allUsers);

  // Создание нового поста для пользователя
  const newPost = await prisma.post.create({
    data: {
      title: 'My first post',
      author: {
        connect: {
          id: newUser.id,
        },
      },
    },
  });
  console.log('Created post:', newPost);
}

main()
  .catch((e) => {
    console.error(e);
    process.exit(1);
  })
  .finally(async () => {
    await prisma.$disconnect();
  });

В этом примере мы создаем нового пользователя, получаем список всех пользователей и создаем новый пост для пользователя.

Обновление данных

Обновление данных с помощью Prisma просто и безопасно. Вот пример обновления определенного поста:

const updatedPost = await prisma.post.update({
  where: {
    id: 1,
  },
  data: {
    title: 'Updated post title',
    content: 'Updated post content',
  },
});
console.log('Updated post:', updatedPost);

В этом примере мы обновляем пост с ID 1, изменяя его заголовок и содержимое.

Удаление данных

В этом примере мы удаляем пост с ID 1.

const deletedPost = await prisma.post.delete({
  where: {
    id: 1,
  },
});
console.log('Deleted post:', deletedPost);

Запросы с фильтрацией, сортировкой и пагинацией

ORM предоставляет мощный API для выполнения запросов с фильтрацией, сортировкой и пагинацией.

Вот пример запроса для получения опубликованных постов, отсортированных по дате создания и с пагинацией:

const publishedPosts = await prisma.post.findMany({
  where: {
    published: true,
  },
  orderBy: {
    createdAt: 'desc',
  },
  skip: 0,
  take: 10,
});
console.log('Published posts:', publishedPosts);

В этом примере мы получаем первые 10 опубликованных постов, отсортированных по дате создания в порядке убывания.