Перейти к содержимому

27. ORM: Prisma

Современный TypeScript ORM с type-safety и автогенерацией типов.

Окно терминала
npm install prisma @prisma/client
npx prisma init
prisma/schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
createdAt DateTime @default(now())
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
}
Окно терминала
npx prisma migrate dev --name init
npx prisma generate
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
// Create
const user = await prisma.user.create({
data: {
name: 'John Doe',
posts: {
create: [
{ title: 'First Post', content: 'Hello World!' }
]
}
},
include: { posts: true }
});
// Read
const users = await prisma.user.findMany({
where: { email: { contains: '@example.com' } },
include: { posts: true }
});
// Update
await prisma.user.update({
where: { id: 1 },
data: { name: 'John Updated' }
});
// Delete
await prisma.user.delete({ where: { id: 1 } });
await prisma.$transaction([
prisma.user.update({ where: { id: 1 }, data: { balance: { decrement: 100 } } }),
prisma.user.update({ where: { id: 2 }, data: { balance: { increment: 100 } } })
]);

Следующий урок: ORM Comparison