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 опубликованных постов, отсортированных по дате создания в порядке убывания.