Démarrage rapide • Site Web • Documents • Exemples • Blog • Discord • Twitter
Prisma ORM est un ORM de nouvelle génération qui se compose de ces outils :
Prisma Client : générateur de requêtes généré automatiquement et de type sécurisé pour Node.js et TypeScript
Prisma Migrate : Système déclaratif de modélisation et de migration de données
Prisma Studio : GUI pour visualiser et éditer les données de votre base de données
Prisma Client peut être utilisé dans n'importe quelle application backend Node.js ou TypeScript (y compris les applications sans serveur et les microservices). Il peut s'agir d'une API REST, d'une API GraphQL, d'une API gRPC ou de tout autre élément nécessitant une base de données.
Si vous avez besoin d'une base de données à utiliser avec Prisma ORM, consultez Prisma Postgres.
Prisma ORM peut être étendu avec ces produits Prisma :
Prisma Accelerate : cache de base de données global avec regroupement de connexions évolutif
Prisma Pulse : événements de base de données en temps réel avec abonnements de type sécurisé
Prisma Optimize : optimisation des requêtes et informations sur les performances basées sur l'IA
Prisma Studio : Un éditeur visuel pour les données de votre base de données
Le moyen le plus rapide de démarrer avec Prisma est de suivre les guides de démarrage rapide. Vous pouvez choisir l'une des deux bases de données :
Prisma Postgres
SQLite
Si vous disposez déjà de votre propre base de données, vous pouvez suivre ces guides :
Ajouter Prisma à un projet existant
Mettre en place un nouveau projet avec Prisma à partir de zéro
Cette section fournit un aperçu de haut niveau du fonctionnement de Prisma ORM et de ses composants techniques les plus importants. Pour une introduction plus approfondie, visitez la documentation Prisma.
Chaque projet qui utilise un outil de la boîte à outils Prisma commence par un fichier de schéma Prisma. Le schéma Prisma permet aux développeurs de définir leurs modèles d'application dans un langage de modélisation de données intuitif. Il contient également la connexion à une base de données et définit un générateur :
// Source de donnéesdatasource db { supplier = "postgresql" url = env("DATABASE_URL")}// Generatorgenerator client { supplier = "prisma-client-js"}// Data modelmodel Post { id Int @id @default(autoincrement( )) titre Contenu de la chaîne Chaîne ? publié Booléen @default(false) auteur Utilisateur ? @relation(fields : [authorId], références : [id]) authorId Int?}model User { id Int @id @default(autoincrement()) email String @unique name String ? messages Post[]}
Dans ce schéma, vous configurez trois éléments :
Source de données : Spécifie votre connexion à la base de données (via une variable d'environnement)
Générateur : Indique que vous souhaitez générer Prisma Client
Modèle de données : Définit vos modèles d'application
Sur cette page, l'accent est mis sur le modèle de données. Vous pouvez en savoir plus sur les sources de données et les générateurs sur les pages de documentation respectives.
Le modèle de données est une collection de modèles. Un modèle a deux fonctions principales :
Représenter une table dans la base de données sous-jacente
Fournir la base des requêtes dans l'API client Prisma
Il existe deux flux de travail principaux pour « insérer » un modèle de données dans votre schéma Prisma :
Générer le modèle de données à partir de l'introspection d'une base de données
Écrire manuellement le modèle de données et le mapper à la base de données avec Prisma Migrate
Une fois le modèle de données défini, vous pouvez générer Prisma Client qui exposera CRUD et davantage de requêtes pour les modèles définis. Si vous utilisez TypeScript, vous bénéficierez d'une sécurité de type totale pour toutes les requêtes (même si vous récupérez uniquement les sous-ensembles des champs d'un modèle).
La première étape lors de l'utilisation de Prisma Client consiste à installer son package npm :
npm install @prisma/client
Notez que l'installation de ce package appelle la commande prisma generate
qui lit votre schéma Prisma et génère le code client Prisma. Le code sera situé dans node_modules/.prisma/client
, qui est exporté par node_modules/@prisma/client/index.d.ts
.
Après avoir modifié votre modèle de données, vous devrez régénérer manuellement Prisma Client pour vous assurer que le code dans node_modules/.prisma/client
est mis à jour :
npx prisma generate
Reportez-vous à la documentation pour plus d'informations sur la « génération du client Prisma ».
Une fois le Client Prisma généré, vous pouvez l'importer dans votre code et envoyer des requêtes à votre base de données. Voici à quoi ressemble le code de configuration.
Vous pouvez importer et instancier Prisma Client comme suit :
importer { PrismaClient } depuis '@prisma/client'const prisma = new PrismaClient()
ou
const { PrismaClient } = require('@prisma/client')const prisma = new PrismaClient()
Vous pouvez maintenant commencer à envoyer des requêtes via l'API client Prisma générée, voici quelques exemples de requêtes. Notez que toutes les requêtes du client Prisma renvoient d'anciens objets JavaScript .
Apprenez-en plus sur les opérations disponibles dans la documentation du client Prisma ou regardez cette vidéo de démonstration (2 min).
User
de la base de données// Exécuté dans la fonction `async` allUsers = wait prisma.user.findMany()
posts
sur chaque objet User
renvoyé// Exécuté dans la fonction `async` allUsers = wait prisma.user.findMany({ include : { posts : true },})
Post
contenant "prisma"
// Exécuté dans la fonction `async` filteredPosts = wait prisma.post.findMany({ où : { OR : [{ title : { contient : 'prisma' } }, { content : { contient : 'prisma' } }], } ,})
User
et un nouvel enregistrement Post
dans la même requête// Exécuté dans `async` functionconst user = wait prisma.user.create({ data : { name : 'Alice', email : '[email protected]', posts : { create : { title : 'Rejoignez-nous pour Prisma Jour 2021' }, }, },})
Post
existant// Exécuté dans la fonction `async` post = wait prisma.post.update({ où : { id : 42 }, data : { publié : true },})
Notez que lorsque vous utilisez TypeScript, le résultat de cette requête sera typé de manière statique afin que vous ne puissiez pas accéder accidentellement à une propriété qui n'existe pas (et toute faute de frappe sera détectée au moment de la compilation). Apprenez-en davantage sur l'exploitation des types générés par Prisma Client sur la page Utilisation avancée des types générés dans la documentation.
Prisma dispose d'une large communauté solidaire de développeurs d'applications enthousiastes. Vous pouvez nous rejoindre sur Discord et ici sur GitHub.
Vous avez construit quelque chose de génial avec Prisma ? ? Montrez-le avec ces badges, parfaits pour votre fichier readme ou votre site Web.
[![Made with Prisma](http://made-with.prisma.io/dark.svg)](https://prisma.io)
[![Made with Prisma](http://made-with.prisma.io/indigo.svg)](https://prisma.io)
Si vous avez un problème de sécurité à signaler, veuillez nous contacter à [email protected].
Vous pouvez poser des questions et lancer des discussions sur des sujets liés à Prisma dans le référentiel prisma
sur GitHub.
? Poser une question
Si vous voyez un message d'erreur ou rencontrez un problème, assurez-vous de créer un rapport de bug ! Vous pouvez trouver les meilleures pratiques pour créer des rapports de bogues (comme l'inclusion de sorties de débogage supplémentaires) dans la documentation.
? Créer un rapport de bug
Si Prisma ne dispose pas actuellement d'une certaine fonctionnalité, assurez-vous de consulter la feuille de route pour voir si cela est déjà prévu pour le futur.
Si la fonctionnalité de la feuille de route est liée à un problème GitHub, assurez-vous de laisser un ? réaction sur le problème et idéalement un commentaire avec vos réflexions sur la fonctionnalité !
? Soumettre une demande de fonctionnalité
Reportez-vous à nos directives de contribution et à notre code de conduite pour les contributeurs.
Statut des tests Prisma :
Statut des tests écosystémiques :