Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Usar ou não schema?

Esse projeto: https://github.com/alura-cursos/alura-docs-2 não usa schema. Em vez disso ele usa o que? E quando é bom usar ou não schema?

1 resposta
solução!

Bom dia,

No projeto alura-docs-2, não existe um schema formal (tipo Mongoose Schema, Zod, Joi etc.).
O que ele usa é basicamente:

  • JavaScript puro
  • Objetos dinâmicos
  • Validação manual e implícita, feita no fluxo da aplicação

Ou seja:
os dados do usuário (email, senha, etc.) são tratados diretamente nos controllers/services, sem uma camada explícita que diga “esse objeto tem esse formato e essas regras”.

Nada impede o JavaScript de aceitar qualquer estrutura então o projeto confia que:

  • o frontend envia os dados corretos
  • o backend trata apenas o necessário
  • erros são tratados conforme aparecem

Isso é comum em projetos didáticos ou mais simples.

O que é exatamente um schema?

Um schema é uma descrição formal da estrutura dos dados, por exemplo:

  • quais campos existem
  • tipos (string, number, etc.)
  • obrigatoriedade
  • validações (tamanho mínimo de senha, formato de email…)

Exemplos de ferramentas que usam schema:

  • Mongoose (MongoDB)
  • Zod
  • Joi
  • Yup
  • Prisma (em outro formato)
  • Quando não usar schema?

Você pode não usar schema quando:

  • O projeto é pequeno ou didático
  • É um protótipo
  • Poucos campos e regras simples
  • Você quer menos código e menos abstração
  • O foco é aprender WebSocket / autenticação / Socket.IO, não modelagem de dados

Esse é exatamente o caso do curso.
O objetivo ali não é ensinar validação ou modelagem, e sim WebSockets + autenticação.

  • Quando usar schema é uma boa ideia?

Use schema quando:

  • O projeto cresce
  • Existem muitas regras de validação
  • Você quer segurança (não confiar no frontend)
  • Precisa de mensagens de erro claras
  • Trabalha em equipe
  • Quer evitar bugs silenciosos
  • Usa TypeScript (combina muito bem)

Exemplo prático:

  • Sem schema: você descobre erro só em runtime, muitas vezes tarde
  • Com schema: erro acontece logo na entrada da requisição

Abçs