Pular para conteúdo

Aula 06 - Persistência e Banco

O Controller, então, captura esse erro e "traduz" para o HTTP:
```javascript
// No Controller
try {
    await service.cadastrar(dados);
} catch (erro) {
    return res.status(400).json({ mensagem: erro.message });
}

5. ViewModels e DTOs (Data Transfer Objects) 📦

Muitas vezes, não queremos devolver todos os dados do banco para o cliente (ex: não queremos devolver a senha!). Usamos DTOs para filtrar o que entra e o que sai do sistema.

🆚 Comparação: MVVM (Mobile/Frontend)

Se você já ouviu falar de MVVM, o Service no Backend é muito similar ao papel do ViewModel no Frontend: ambos lidam com a lógica e os dados, deixando a "View" (ou Controller) limpa de complexidade.


6. Mini-Projeto: Refatorando para Service 🛠️

Imagine o sistema de Transferência Bancária. 1. Crie a função transferir(origem, destino, valor) no Service. 2. Quais validações você faria antes de confirmar a transferência? (Saldo, conta ativa, valores negativos...). 3. Simule o lançamento de um erro caso o saldo seja insuficiente.


7. Exercício de Fixação 🧠

  1. O que acontece com a manutenção do sistema se um Service for reaproveitado por dois Controllers diferentes?
  2. Por que o Service não deve saber que o req e o res do Express existem?
  3. Qual a vantagem de "limpar" os dados (DTO) antes de enviá-los ao cliente?

Próxima Aula: Onde guardamos esses dados? Repositories e Banco de Dados (PostgreSQL) 🗄️