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

[Sugestão] Otimizando código

Uma das coisas que eu gostaria de ver mais nos cursos, é o "caminho do herói", quando a gente já aprendeu algo em algum curso anterior e existe uma forma mais prática de fazer o código de forma mais limpa e ainda assim ir aumentando a dificuldade gradualmente, sempre aplicando o conhecimento que já vimos nos cursos anteriores.

Eu tenho a seguinte sugestão de código para o arquivo index.js da pasta routes, já que o arquivos index.js da pasta models que é criada pelo Sequelize (até onde me lembro) nós não precisamos ao criar um novo model abrir esse arquivo para adicionar a importação desse novo model manualmente, por que não fazemos o mesmo com o index de routes e utilizamos o fs que já vimos em cursos anteriores da trilha de NodeJS? Assim podemos ler todos os arquivos da pasta routes que terminam em "Routes.js" (evitando a importação de outros arquivos como por exemplo o próprio index.js) e fazer a importação automatica dos arquivos que criamos e evitamos possíveis erros quando a aplicação ficar maior. Aqui está a minha sugestão de código:

const fs = require('fs');
const path = require('path');

module.exports = (app) => {
    const routesPath = path.join(__dirname); //caminho da pasta local

    fs.readdirSync(routesPath).forEach(file => {
        if (file.endsWith('Route.js')) {
            // somente queremos os arquivos que terminam em Route.js
            // se não for um arquivo assim, ele será ignorado (como é o caso do index.js)
            const route = require(path.join(routesPath, file));
            app.use(express.json(), route);
        }
    });
};

Outro ponto importante foi levantado nesse tópico do Leonardo em abril de 2024, a pergunta dele era o que aconteceria se na URI fosse passado por exemplo o o id 2 (/pessoas/2/matriculas) e o corpo da requisição fosse passado o corpo abaixo:

{
    "status": "cancelado",
    "estudanteId": 1,
    "cursoId": 2
}

Qual id seria alterado no banco de dados? De acordo com o nosso código, seria alterado o id 1 que é passado no corpo da requisição, já que de fato não estamos fazendo absolutamente nada com o id que é fornecido na URI e inclusive fica essa observação, por qual motivo estamos forçando uma rota que devo passar um id que simplesmente não vamos sequer ler o seu valor e usar para nada?

A princípio eu faria essas alterações nessa aula, acredito que fosse interessante sempre usar as melhores técnicas de tudo que já aprendemos e usar nos cursos seguintes, para que o aluno possa não somente aprender a escrever um código, mas que possa aprender a escrever um código mais próximo do código real que encontraremos em uma empresa e evitar ao mesmo tempo, ter que fazer 10 cursos para aprender o tudo que poderíamos ter visto em 3 ou 4 cursos mais complexos.

Ainda assim eu gosto da linguagem dos professores! Alura sempre tem cursos bons!

1 resposta
solução!

Oi, Felipe! Tudo bem?

Obrigada por compartilhar sua sugestão e por seu interesse em otimizar o código e aplicar técnicas aprendidas em cursos anteriores! A ideia de automatizar a importação das rotas utilizando o módulo fs é excelente e pode realmente tornar o código mais limpo e menos propenso a erros, especialmente em projetos maiores.

O código que você sugeriu para o arquivo index.js na pasta routes é uma boa prática para evitar a necessidade de importar manualmente cada nova rota. Ao utilizar o fs para ler os arquivos que terminam em "Route.js", você garante que apenas os arquivos de rotas sejam importados, evitando erros comuns, como esquecer de adicionar uma nova rota ao arquivo de entrada.

Sobre a questão levantada no tópico, é importante garantir que os IDs passados na URI e no corpo da requisição estejam sendo utilizados corretamente, se o ID na URI não está sendo utilizado, pode ser necessário revisar a lógica para garantir que a aplicação esteja manipulando os dados de forma consistente e segura. Uma abordagem comum é validar se os IDs coincidem e, caso contrário, retornar um erro ao usuário, para evitar alterações indesejadas no banco de dados.

Sua sugestão de incorporar técnicas avançadas e práticas de mercado nos cursos é muito válida, pois ajuda a preparar os alunos para desafios reais e a escrever código que seja não apenas funcional, mas também eficiente e sustentável, muito obrigada por ela!

Um forte abraço e bons estudos!