Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🔷
Debutant 25 min Prisma

Debuter avec Prisma

Pourquoi Prisma ?

Prisma est une alternative moderne aux ORM (Object Relational Mapping) traditionnels comme Sequelize ou TypeORM. Il est conçu pour simplifier la gestion de la base de données en offrant une API intuitive et type-safe. Un cas d'usage concret est le développement rapide de projets où on a besoin de manipuler des données relationnelles sans se soucier du boilerplate de code SQL.

Prerequis

  • Connaissances en JavaScript ou TypeScript
  • Node.js v14.0.0 ou plus tard
  • PostgreSQL, MySQL ou MongoDB (pour les bases de données supportées)
  • Un IDE comme Visual Studio Code avec la extension Prisma Client

Pour installer Prisma, exécutez :

npm install prisma --save-dev
npx prisma init

Concepts fondamentaux

1. Schéma Prisma (prisma.schema)

Le schéma Prisma est un fichier .schema qui décrit la structure de votre base de données.

// Exemple de schema Prisma
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

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

2. Prisma Client

Prisma Client est généré à partir du schéma et fournit une API type-safe pour interagir avec la base de données.

// Exemple d'utilisation de Prisma Client
const { PrismaClient } = require('@prisma/client');

const prisma = new PrismaClient();

async function main() {
  const user = await prisma.user.create({
    data: {
      email: 'alice@prisma.io',
      name: 'Alice'
    }
  });
  console.log(user);
}

main()
  .catch((e) => {
    throw e;
  })
  .finally(async () => {
    await prisma.$disconnect();
  });

3. Migrations

Prisma utilise des migrations pour gérer les changements de schéma.

npx prisma migrate dev --name init

Mise en pratique : projet fil rouge - Gestionnaire de Tâches

Étape 1: Initialisation du Projet

Créez un nouveau dossier et initialisez un nouveau projet Node.js :

mkdir task-manager
cd task-manager
npm init -y
npm install prisma @prisma/client express
npx prisma init

Étape 2: Configuration de la Base de Données

Modifiez le fichier prisma/schema.prisma pour définir le schéma :

// prisma/schema.prisma
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model Task {
  id        Int     @id @default(autoincrement())
  title     String
  description String?
  completed Boolean @default(false)
}

Étape 3: Création des Migrations

Créez une migration initiale :

npx prisma migrate dev --name init

Étape 4: Création de l'API avec Express

Créez un fichier server.js pour définir l'API :

// server.js
const express = require('express');
const { PrismaClient } = require('@prisma/client');

const app = express();
app.use(express.json());
const prisma = new PrismaClient();

// Endpoint pour créer une tâche
app.post('/tasks', async (req, res) => {
  const task = await prisma.task.create({
    data: req.body,
  });
  res.json(task);
});

// Endpoint pour récupérer toutes les tâches
app.get('/tasks', async (req, res) => {
  const tasks = await prisma.task.findMany();
  res.json(tasks);
});

// Démarrage du serveur
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Étape 5: Test de l'API

Lancez le serveur et testez les endpoints :

node server.js

Ensuite, utilisez un outil comme curl ou Postman pour tester les endpoints :

## Créer une tâche
curl -X POST http://localhost:3000/tasks -H "Content-Type: application/json" -d '{"title": "Buy groceries"}'

## Récupérer toutes les tâches
curl http://localhost:3000/tasks

Erreurs frequentes et debugging

1. PrismaClientInitializationError: Prisma schema validation error

Code incorrect :

// prisma/schema.prisma (incorrect)
model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
}

Code correct :

// prisma/schema.prisma (correct)
model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
}

2. Error: No Prisma Client instance available.

Code incorrect :

// server.js (incorrect)
const { PrismaClient } = require('@prisma/client');

app.post('/tasks', async (req, res) => {
  const task = await prisma.task.create({
    data: req.body,
  });
  res.json(task);
});

Code correct :

// server.js (correct)
const express = require('express');
const { PrismaClient } = require('@prisma/client');

const app = express();
app.use(express.json());
const prisma = new PrismaClient();

app.post('/tasks', async (req, res) => {
  const task = await prisma.task.create({
    data: req.body,
  });
  res.json(task);
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

Pour aller plus loin

  1. Utilisation des relations entre modèles : Explorez comment définir des relations dans Prisma pour gérer les liens entre différentes tables.
  2. Middleware et Hooks : Utilisez middleware et hooks pour ajouter des fonctionnalités avant ou après l'exécution de requêtes Prisma.
  3. Prisma Client JavaScript/TypeScript : En apprenant à utiliser Prisma Client dans un environnement JavaScript ou TypeScript, vous serez capable de travailler avec une API type-safe.

Défi pratique

Développez une application simple qui permet d'ajouter, mettre à jour et supprimer des utilisateurs. Utilisez les concepts que vous avez appris pour gérer les opérations CRUD sur la base de données.

Besoin d'aide sur Prisma ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Qu'est-ce que Prisma?
Prisma est un outil d'ORM (Object Relational Mapping) pour Node.js et TypeScript, qui facilite l'accès à la base de données en utilisant des types de données définis dans le code.
Comment installer Prisma?
Pour installer Prisma, vous devez d'abord installer Node.js et npm. Ensuite, exécutez la commande 'npm install prisma --save-dev' dans votre projet pour l'installer en tant que dépendance de développement.
Où puis-je obtenir de l'aide si je rencontre des problèmes avec Prisma?
Si vous avez des questions ou rencontrez des problèmes, vous pouvez consulter la documentation officielle de Prisma sur leur site web. De plus, le communauté active de développeurs peut vous aider sur des forums et des groupes sociaux dédiés à Prisma.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.