Validação e Criação de Registros com Prisma e Zod
node
Quando desenvolvemos aplicações web, a validação dos dados é um passo crucial para garantir a integridade e a consistência das informações que são armazenadas no banco de dados. Durante a leitura desse conteúdo você vai ficar por dentro de como realizar a validação e a inserção de dados utilizando TypeScript, Prisma e a biblioteca de validação Zod.

Beleza, mas por que validar os dados?

A validação dos dados assegura que as informações fornecidas pelos usuários estejam no formato esperado antes de qualquer operação no banco de dados. Sem validação, dados incorretos ou malformados podem causar erros, comportamentos inesperados e até comprometer a segurança da aplicação.

Ferramentas Utilizadas

  • TypeScript: Superset de JavaScript que adiciona tipagem estática, proporcionando maior segurança e previsibilidade ao código.
  • Prisma: ORM (Object-Relational Mapping) que facilita a interação com o banco de dados de forma tipada e intuitiva.
  • Zod: Biblioteca de validação que permite criar esquemas de validação robustos e integrados com TypeScript.

Bora pro código

Instalação das Dependências

Primeiro, vamos instalar as bibliotecas necessárias:
npm install zod prisma

Definindo o Esquema (Schema) do Banco de Dados

Vamos definir o esquema do banco de dados utilizando o Prisma. Suponha que temos um model Event no arquivo schema.prisma:
model Event { id Int @id @default(autoincrement()) title String details String? maximumAttendees Int? @map("maximum_attendees") slug String @unique @@map("events") }

Criando o Esquema de Validação com Zod

Utilizaremos o Zod para definir o esquema de validação dos dados:

Validando e Criando o Evento no Banco de Dados

Agora, vamos implementar a rota de criação de evento, validando os dados recebidos antes de inseri-los no banco de dados:
import { PrismaClient } from '@prisma/client' import fastify from 'fastify' import { z } from 'zod' const app = fastify() const prisma = new PrismaClient({ log: [query], }) app.post('/events', async (request, reply) => { const createEventSchema = z.object({ title: z.string().min(4), details: z.string().nullable(), maximumAttendees: z.number().int().positive().nullable(), }) const data = createEventSchema.parse(request.body) await prisma.event.create({ data: { title: data.title, details: data.details, maximumAttendees: data.maximumAttendees, //um improviso slug: new Date().toISOString(), }, }) return reply.status(201).send({ eventId: event.id }) }

Configuração do Prisma

Certifique-se de que o Prisma está configurado corretamente e que você executou a migração para criar a tabela Event no banco de dados:
npx prisma migrate dev --name init

Testando a Implementação

Para testar a rota de criação de eventos, utilize uma ferramenta como Postman ou Insomnia para enviar uma requisição POST para a rota /event com o seguinte corpo:
{ "title": "Meu Evento", "details": "Detalhes do evento", "maximumAttendees": 100 }
Se os dados estiverem corretos, o evento será criado e o ID do evento será retornado na resposta com o status 201 (Created). Caso contrário, um erro de validação será retornado com o status 400 (Bad Request).
 
A validação de dados é uma prática essencial no desenvolvimento de aplicações robustas e seguras. Utilizando TypeScript, Prisma e Zod, conseguimos criar uma solução eficiente e tipada para validar e inserir registros no banco de dados. Este método não só previne erros e inconsistências, mas também melhora a qualidade do código e a experiência do desenvolvedor.

Com esta abordagem, você pode garantir que suas operações de banco de dados sejam seguras e consistentes, proporcionando uma base sólida para o desenvolvimento de aplicações web escaláveis.
Que tal ver na prática? Vem pro código com o Diego Fernandes 👇
Video preview

Aprenda programação do zero e DE GRAÇA

No Discover você vai descomplicar a programação, aprender a criar seu primeiro site com a mão na massa e iniciar sua transição de carreira.

COMECE A ESTUDAR AGORA