TL;DR
Quoi : Un ORM nouvelle génération pour Node.js et TypeScript.
Pourquoi : Requêtes type-safe, client auto-généré, navigateur de base de données visuel, migrations.
Quick Start
Installer :
npm install prisma --save-dev
npm install @prisma/client
npx prisma init
Définir le schéma (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[]
}
model Post {
id Int @id @default(autoincrement())
title String
author User @relation(fields: [authorId], references: [id])
authorId Int
}
Exécuter les migrations :
npx prisma migrate dev --name init
Cheatsheet
| Commande | Description |
|---|---|
npx prisma init | Initialiser Prisma |
npx prisma migrate dev | Créer une migration |
npx prisma generate | Générer le client |
npx prisma studio | Ouvrir le navigateur de BDD |
npx prisma db push | Pousser le schéma (sans migration) |
npx prisma db pull | Tirer le schéma de la BDD |
Gotchas
Opérations CRUD
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
// Create
const user = await prisma.user.create({
data: { email: '[email protected]', name: 'John' }
})
// Read
const users = await prisma.user.findMany()
const user = await prisma.user.findUnique({ where: { id: 1 } })
// Update
await prisma.user.update({
where: { id: 1 },
data: { name: 'Johnny' }
})
// Delete
await prisma.user.delete({ where: { id: 1 } })
Relations
// Create with relation
await prisma.post.create({
data: {
title: 'Hello',
author: { connect: { id: 1 } }
}
})
// Query with relations
const userWithPosts = await prisma.user.findUnique({
where: { id: 1 },
include: { posts: true }
})
Filtrage
const users = await prisma.user.findMany({
where: {
email: { contains: '@example.com' },
name: { not: null },
posts: { some: { title: { startsWith: 'Hello' } } }
},
orderBy: { name: 'asc' },
take: 10,
skip: 0
})
Next Steps
- Prisma Documentation - Documentation officielle
- Prisma Examples - Exemples de code
- Prisma Schema Reference - Syntaxe du schéma
- Prisma Studio - Éditeur visuel