2
respostas

CRUD em nodeJS

Bom dia pessoal, tudo bem?

Sou iniciante em nodeJS e estou criando um projeto em angular e node.

Estou num ponto do sistema em que preciso criar o CRUD em nodeJS, e pelos cursos que assisti, tenho que criar vários controllers para cada action para uma determinada entidade(pelo menos foi isso que entendi no videos). Seria algo do tipo: um controller para cadastro, outro para delete, mais um para edit, etc...

Não acho essa a melhor forma e ficaria ruim para manutenção. Não tem como fazer igual no java, onde cria-se um único controller e coloco toda a logica e funções de uma entidade num único controller, só que no node?

Qual seria a melhor alternativa ou o a maneira mais correta de centralizar isso?

Obrigado a todos.

2 respostas

Oi Wagner, pode e na verdade acredito que deve-se deixar tudo em apenas um controller para cada entidade. O que pode acontecer é de um controller ficar muito grande e por isso, por boa prática, você queira refatorar e reparar alguns arquivos. Mas o ideal é esse mesmo, que todas as ações fiquem em apenas um controller por entidade.

Isso mesmo, o ideal seria um controller por entidade.

Agora, dentro do controller, você não precisa ter toda a lógica. Você pode separar essa lógica em outros arquivos, para ficar mais fácil de manter.

Eu gostei deste curso de Node.

https://cursos.alura.com.br/course/nodejs-avancado

Se você fizer o curso, vai perceber que para cada controller, foi criada uma classe de persistência (um DAO). Então a lógica de gravar, listar, apagar, fica num arquivo em separado. Então cada rota do controller valida os dados (usando expressValidator), e se estiver OK, usa a clase de persistência. Então a rota retorna o conteúdo em caso de sucesso ou erro.

Você poderia até fazer algo mais sofisticado, tem uma classe intermediária para validar os dados, e em caso positivo, usar a classe de DAO para gravar. Desta forma o código em cada rota ficaria ainda menor, seria apenas receber os dados e devolver.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software