w3resource

Step-by-Step Guide to using Prisma with PostgreSQL


Integrating Prisma with PostgreSQL

Prisma is a modern database toolkit for building scalable and efficient server-side applications. It provides an abstraction over your PostgreSQL database, offering a type-safe query builder and an intuitive ORM (Object-Relational Mapping). This guide elaborates on setting up Prisma with PostgreSQL, including installation, configuration, syntax examples, and best practices.


Steps to Integrate Prisma with PostgreSQL

1. Prerequisites

Ensure the following are installed:

    1. Node.js (v12 or later)

    2. PostgreSQL (installed and running)

    3. A PostgreSQL Database for Prisma to connect to

2. Install Prisma CLI

# Install Prisma CLI globally
npm install -g prisma

3. Initialize Prisma in Your Project

# Initialize Prisma in your project directory
npx prisma init

This creates a prisma directory containing:

  • schema.prisma: Main configuration file.
  • Environment file: .env to store PostgreSQL connection strings.

4. Configure PostgreSQL in .env File

Update the .env file with your database credentials:

DATABASE_URL="postgresql://username:password@localhost:5432/database_name"

Defining a Prisma Schema

In the prisma/schema.prisma file, define your database schema.

Example Schema

Code:

// Specify the datasource and generator
datasource db {
  provider = "postgresql" // Use PostgreSQL as the provider
  url      = env("DATABASE_URL") // Fetch connection details from .env
}

generator client {
  provider = "prisma-client-js" // Generate Prisma client for JavaScript
}

// Define a model
model User {
  id        Int      @id @default(autoincrement()) // Primary key
  email     String   @unique // Unique constraint
  name      String?
  createdAt DateTime @default(now()) // Timestamp
}

Migrate the Database

Run the following commands to apply schema changes to the PostgreSQL database:

Code:

# Create migration files
npx prisma migrate dev --name init

# Generate the Prisma client
npx prisma generate

This creates migration SQL files and updates the database schema.

Using Prisma in Your Project

Install Prisma Client

npm install @prisma/client

Querying PostgreSQL with Prisma

Code:

// Import Prisma Client
const { PrismaClient } = require('@prisma/client');

// Initialize Prisma Client
const prisma = new PrismaClient();

async function main() {
  // Create a new user
  const newUser = await prisma.user.create({
    data: {
      email: '[email protected]',
      name: ‘Howell Lulit',
    },
  });
  console.log('Created User:', newUser);

  // Fetch all users
  const allUsers = await prisma.user.findMany();
  console.log('All Users:', allUsers);

  // Update a user
  const updatedUser = await prisma.user.update({
    where: { email: 'howell.lulit @example.com' },
    data: { name: 'Howell Smith' },
  });
  console.log('Updated User:', updatedUser);
}

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

Explanation:

    1. Schema Definition: Models represent database tables. Each field corresponds to a table column.

    2. Migrations: Tracks schema changes and applies them to the database.

    3. Queries: Type-safe operations (e.g., create, findMany, update) are auto-generated based on the schema.

Benefits of Using Prisma with PostgreSQL

    1. Type Safety: Ensures compile-time checks for database queries.

    2. Ease of Use: Simplifies database operations with an intuitive API.

    3. Migration System: Tracks schema evolution reliably.

    4. Cross-Platform: Works seamlessly with PostgreSQL, MySQL, MongoDB, and more.

Best Practices

    1. Use environment variables for sensitive database connection details.

    2. Regularly backup your database before running migrations.

    3. Leverage Prisma Studio for visual database exploration (npx prisma studio).

All PostgreSQL Questions, Answers, and Code Snippets Collection.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/PostgreSQL/snippets/prisma-postgresql.php