Publicado em: 17/03/2025

Au 04 - Back-end - Node.js - Modelando o produto - Mestres BEGIN


Nesta aula, vamos estruturar nosso modelo de produtos e criar as rotas básicas para operações CRUD em nossa API.

Estrutura do Modelo de Produto

Criamos um modelo para produtos com os seguintes campos:

1import { Schema, model } from "mongoose";
2const productSchema = new Schema({
3  category: { type: String, required: true },
4  brand: { type: String, required: true },
5  store: { type: String, required: true },
6  name: { type: String, required: true },
7  price: { type: Number, required: true },
8  previousPrice: { type: Number },
9  description: { type: String },
10  quantity: { type: Number, required: true }
11});
12export const Product = model("Product", productSchema);

Organização do Projeto

Estrutura de pastas recomendada:

  • src/models/ - Modelos do MongoDB
    • products/ - Modelo específico de produtos
  • src/routes/ - Definição de rotas da API

Criação das Rotas Básicas

Configuramos um router com os principais métodos HTTP:

1import express from "express";
2const router = express.Router();
3// GET /products - Listar produtos
4router.get("/products", (req, res) => {
5  res.status(200).json({ ok: true });
6});
7// POST /products - Criar novo produto
8router.post("/products", (req, res) => {
9 // Implementação futura
10});
11// PATCH /products/:id - Atualizar produto
12router.patch("/products/:id", (req, res) => {
13  // Implementação futura
14});
15// DELETE /products/:id - Remover produto
16router.delete("/products/:id", (req, res) => {
17  // Implementação futura
18});
19export default router;

Integração com a Aplicação Principal

No arquivo principal (index.ts):

1import router from "./routes";
2// ... outras configurações ...
3app.use(router); // Registra todas as rotas

Próximos Passos

Nas próximas aulas vamos implementar:

  1. Operação GET para listar produtos do banco
  2. Operação POST para criar novos produtos
  3. Validação dos dados recebidos
  4. Tratamento de erros específicos
  5. Operações PATCH e DELETE completas

Considerações Finais

Esta estrutura inicial proporciona uma base sólida para nosso CRUD de produtos. Algumas melhorias futuras incluem:

  • Validação mais robusta dos campos
  • Paginação para listagem de produtos
  • Filtros avançados nas consultas
  • Deleção lógica em vez de física
  • Separação em controllers para melhor organização

Lembre-se que em um projeto real, você provavelmente dividiria os modelos de categoria, marca e loja em coleções separadas com relacionamentos, mas para fins didáticos, começamos com esta estrutura simplificada.

Fernando Cunha
Artigo deFernando Cunha

Com mais de 15 anos de experiência em tecnologia e formado pela FAAP em Administração de empresas, hoje é o CEO da Mestres da Web, empresa referência no mercado nacional e com projeções de expansão internacional.

últimos vídeos

veja nossos vídeos mais recentes e esteja por dentro de muitas novidades.

Au 02 - Front-end - React - Estrutura de projeto - Mestres BEGIN
play

Au 02 - Front-end - React - Estrutura de projeto - Mestres BEGIN

Explorando a estrutura gerada pelo Create React App, entendendo o papel das pastas public e src, os conceitos de Virtual DOM, JSX e componentes, além de como o CSS é aplicado nos projetos React.

Autor deste artigo
Fernando Cunha17/03/2025
Au 03 - Front-end - React - Criando layout da nossa aplicação - Mestres BEGIN
play

Au 03 - Front-end - React - Criando layout da nossa aplicação - Mestres BEGIN

Explorando a criação de um layout fixo para a aplicação React, com barra lateral, barra superior e área dinâmica para conteúdo. Utilizando o React Router Dom v6 para gerenciar navegação entre rotas.

Autor deste artigo
Fernando Cunha17/03/2025
Au 04 - Front-end - React - Estilizando o layout da aplicação - Mestres BEGIN
play

Au 04 - Front-end - React - Estilizando o layout da aplicação - Mestres BEGIN

Abordando técnicas para organizar estilos em React, utilizando seletores CSS, CSS Modules, integração com React Router, reset CSS eficiente e boas práticas para garantir consistência visual e manutenibilidade.

Autor deste artigo
Fernando Cunha17/03/2025