Prisma Client
Prisma Client is an auto-generated and type-safe query builder that's tailored to your data. The easiest way to get started with Prisma Client is by following the Quickstart.
Quickstart (5 min)The setup instructions below provide a high-level overview of the steps needed to set up Prisma Client. If you want to get started using Prisma Client with your own database, follow one of these guides:
Set up a new project from scratchAdd Prisma to an existing project
Set up
1. Prerequisites
In order to set up Prisma Client, you need a Prisma schema file with your database connection, the Prisma Client generator, and at least one model:
schema.prisma1datasource db {2 url = env("DATABASE_URL")3 provider = "postgresql"4}56generator client {7 provider = "prisma-client-js"8}910model User {11 id Int @id @default(autoincrement())12 createdAt DateTime @default(now())13 email String @unique14 name String?15}
Also make sure to install the Prisma CLI:
npm install prisma --save-devnpx prisma
2. Installation
Install Prisma Client in your project with the following command:
npm install @prisma/client
This command also runs the prisma generate command, which generates the Prisma Client into the node_modules/.prisma/client directory.
3. Use Prisma Client to send queries to your database
import { PrismaClient } from '@prisma/client'const prisma = new PrismaClient()// use `prisma` in your application to read and write data in your DB
or
const { PrismaClient } = require('@prisma/client')const prisma = new PrismaClient()// use `prisma` in your application to read and write data in your DB
Once you have instantiated PrismaClient, you can start sending queries in your code:
// run inside `async` functionconst newUser = await prisma.user.create({data: {name: 'Alice',email: 'alice@prisma.io',},})const users = await prisma.user.findMany()
- Note that queries will only run if used with
awaitor chained with.then(). When using$transaction's this makes it possible for the client to pass all the queries on to the query engine as a transaction. - The client methods are "thenable", they return a PrismaPromise which is implemented like a JavaScript Promise, except for the query to be executed they need to be awaited or chained with
.then().
4. Evolving your application
Whenever you make changes to your database that are reflected in the Prisma schema, you need to manually re-generate Prisma Client to update the generated code in the node_modules/.prisma/client directory:
prisma generate
In this section
- Working with PrismaClient
- CRUD
- Select fields
- Relation queries
- Filtering and sorting
- Working with fields
- Advanced type safety
- Middleware
- Pagination
- Aggregation, grouping, and summarizing
- Transactions and batch queries
- Case sensitivity
- Null and undefined
- Raw database access
- Debugging
- Module bundlers
- Database polyfills
- Handling exceptions and errors
