logo site seligadev
Como Configurar o Prisma 7 em um Projeto NestJS (Guia Passo a Passo)

Como Configurar o Prisma 7 em um Projeto NestJS (Guia Passo a Passo)

Jander Nery

Jander Nery

icon social media linkedinicon social media Xicon social media youtubeicon social media instagramicon social media facebookicon social media github

Configurar o ORM Prisma em uma aplicação NestJS pode ser confuso — especialmente com as mudanças recentes no Prisma 7.

Neste guia, vou te mostrar uma configuração limpa, pronta para produção, usando NestJS e PostgreSQL, além de destacar erros comuns (para você não ficar travado como a maioria dos desenvolvedores no início).


O que é o Prisma?

O Prisma é um ORM moderno que simplifica o trabalho com bancos de dados, oferecendo:

  • Consultas tipadas (type-safe)
  • Cliente gerado automaticamente
  • Migrations simples
  • Excelente experiência de desenvolvimento

Pré-requisitos

Antes de começar, você precisa ter:

  • Node.js instalado
  • Um projeto NestJS (npm install -g @nestjs/cli e nest new project-name)
  • Um banco PostgreSQL (local ou cloud, como Neon)

1️⃣ Instalar o Prisma

Dentro do seu projeto NestJS:

npm install prisma --save-dev
npm install prisma @types/pg --save-dev

Isso vai criar:

  • prisma/schema.prisma
  • .env
  • prisma.config.ts

Exemplo do arquivo prisma.config.ts:

import "dotenv/config";
import { defineConfig, env } from "prisma/config";

export default defineConfig({
  schema: "prisma/schema.prisma",
  migrations: {
    path: "prisma/migrations",
  },
  datasource: {
    url: env("DATABASE_URL"),
  },
});

3️⃣ Configurar o banco de dados

No .env:

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

👉 Importante:

  • output: coloca o client dentro do seu projeto Nest
  • moduleFormat = "cjs": necessário porque o Prisma 7 usa ES Modules por padrão, e o NestJS geralmente usa CommonJS

5️⃣ Definir um modelo

Exemplo:

model Employee {
id Int @id @default(autoincrement())
name String
email String @unique
role Role
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

enum Role {
INTERN
ENGINEER
ADMIN
}

Isso irá:

  • Criar tabelas no banco
  • Gerar arquivos de migration

7️⃣ Gerar o Prisma Client

npx prisma generate

No arquivo prisma.service.ts:

import 'dotenv/config';
import { Injectable, OnModuleInit } from '@nestjs/common';
import { PrismaClient } from '../generated/prisma/client.js';
import { PrismaPg } from '@prisma/adapter-pg';

@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit {
  constructor() {
    const adapter = new PrismaPg({
      connectionString: process.env.DATABASE_URL as string,
    });
    super({ adapter });
  }

  async onModuleInit() {
    await this.$connect();
  }
}

prisma.module.ts:

import { Module } from '@nestjs/common';
import { PrismaService } from './prisma.service';

@Module({
  providers: [PrismaService],
  exports: [PrismaService],
})
export class PrismaModule {}

🔟 Testar a aplicação

npm run start:dev

4. Drift detected

👉 Solução:

npx prisma migrate reset

💡 Lições principais

  • Prisma 7 exige um driver adapter
  • O client deve ser importado do caminho correto
  • NestJS funciona melhor com CommonJS
  • Coloque o Prisma dentro de src/ para evitar problemas

🚀 Conclusão

Prisma + NestJS é uma combinação poderosa para criar backends escaláveis.

Depois de bem configurado, você terá:

  • Arquitetura limpa
  • Tipagem forte
  • Desenvolvimento mais rápido

© 2026 Seligadev.Todos os direitos reservados.