Prisma Guide

Prisma is a next-generation ORM that provides type-safe database access for your Express.js application.

Adding Prisma to Your Project

xacos create:prisma

Define Your Schema

Edit prisma/schema.prisma to define your data models:

generator client {
  provider = "prisma-client-js"
}

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

model User {
  id        String   @id @default(uuid())
  email     String   @unique
  name      String
  posts     Post[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

model Post {
  id        String   @id @default(uuid())
  title     String
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id])
  authorId  String
  createdAt DateTime @default(now())
}

Running Migrations

# Create a migration
npx prisma migrate dev --name add-user-model

# Generate Prisma Client
npx prisma generate

# Apply migrations in production
npx prisma migrate deploy

Using Prisma Client

import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

// Create a user
const user = await prisma.user.create({
  data: {
    email: 'alice@example.com',
    name: 'Alice',
  },
});

// Find all users
const users = await prisma.user.findMany({
  include: { posts: true },
});

// Update a user
const updated = await prisma.user.update({
  where: { id: user.id },
  data: { name: 'Alice Updated' },
});

Prisma Studio

Open Prisma Studio to manage your data visually:

npx prisma studio