logo site seligadev
Banner do Post

Prisma + NestJS: iniciando o acesso ao banco de dados

Jander Nery

Jander Nery

icon social media linkedinicon social media linkedinicon social media X

Se você já subiu sua primeira API com NestJS , chegou a hora de dar um passo além: conectar seu projeto ao banco de dados .

E aqui entra um dos queridinhos da comunidade Node.jsPrisma ORM


1️⃣ O que é o Prisma?

Imagine o Prisma como o "tradutor oficial" entre seu código TypeScript e o banco de dados.

Ele converte consultas SQL complexas em código simples, limpo e tipado.


2️⃣ Instalando o Prisma

Dentro do seu projeto:

npm install prisma --save-dev
npm install @prisma/client
npx prisma init

Isso vai criar a pasta
prisma/
e o arquivo
.env
para configurar o banco.


3️⃣ Preparando o Ambiente

Você já conhece o Docker e o Docker Compose, então vai utilizar para criar um banco Postgres.

  1. Crie um arquivo na raiz do seu projeto
sudo nano docker-compose.yaml
  1. Agora copie e cole em seu arquivo o código abaixo.
version: '3.5'
services:
  db:
    image: postgres
    container_name: postgres_container
    volumes:
       - postgres:/data/postgres
    environment:
      POSTGRES_PASSWORD: changepass
      POSTGRES_USER: changeuser
      POSTGRES_DB: changename
      PGDATA: /data/postgres
    ports:
      - "5432:5432"
    networks:
      - postgres
    restart: unless-stopped
volumes:
    postgres:

4️⃣ Configurando o banco no
.env

DATABASE_URL="postgresql://changeuser:changepass@localhost:5432/changename?schema=public"

⚡ Dica: Prisma funciona com PostgreSQL, MySQL, SQLite, MongoDB e outros!


5️⃣ Criando o schema do Prisma

Arquivo:
prisma/schema.prisma

model User {
  id    Int     @default(autoincrement()) @id
  email String  @unique
  name  String?
  posts Post[]
}

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

6️⃣ Rodando as migrações

npx prisma migrate dev --name init
📂 prisma
├── 📁 migrations
│   ├── 20201207100915_init
│   │   └── migration.sql
└── schema.prisma

Isso vai criar as tabelas no banco com base no seu schema.


7️⃣ Usando no NestJS

npm install @prisma/client

Crie o PrismaService :

📂 meu-projeto-prisma
├── 📁 src
│   ├── 📁 database
│   │   └── prisma.service.ts
│   ├── app.module.ts
│   ├── app.controller.ts
│   ├── app.service.ts
│   └── main.ts
├── .env
├── package.json
└── tsconfig.json
import { Injectable, OnModuleInit } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';

@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit {
  async onModuleInit() {
    await this.$connect();
  }
}

8️⃣ CRUD com Prisma

No seu
UserService
:

async create(data: { name: string; email: string }) {
  return this.prisma.user.create({ data });
}

async findAll() {
  return this.prisma.user.findMany();
}

9️⃣ Prisma Studio 😍

Quer ver seus dados com uma UI bonita ?

npx prisma studio

🔥 Conclusão

Com o Prisma , você tem:

✅ Tipagem automática

✅ Migrações simples

✅ CRUD sem complicação

✅ Uma UI para brincar com os dados

Agora sua API NestJS está pronta para brilhar ! 🚀

💬 Você já usou Prisma ou ainda está preso no TypeORM/Sequelize ?