Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Utilização do app nos Controllers

Boa tarde, pode me explicar como o module.exports reconhece o app ?

2 respostas
solução!

Olá Santi, tranquilo?

Então, na verdade o module.exports está sendo apenas uma função que recebe um parâmetro app, de fato ele não conhece, mas espera que seja passado uma instância do express

Por exemplo, em atendimentos.js poderíamos mudar de app para servidor por exemplo;

module.exports = (servidor) => {

    servidor.get('/atendimentos', (req, res) => res.send('Você está na rota de atendimentos e está realizando um GET'))

    servidor.post('/atendimentos', (req, res) => {
        console.log('Atendimento enviado')
        console.log(req.body)
        res.send('Post atendimento')
    })
}

A única questão é que esse parâmetro precisa ser uma instância do express para que exista de fato os métodos gete post, caso contrário teremos um erro :)

E ai entra o consign

 consign()
   .include('controllers')
   .into(app)

Para todos nossos controllers que recebem um app como parâmetro para funcionar, estamos passando a referência de nosso servidor de fato, dessa forma seria como estívessemos fazendo:

const rotasAtendimentos = require('../controllers/atendimentos');

module.exports = () => {
 const app = express()

 app.use(bodyParser.json())
 app.use(bodyParser.urlencoded({ extended: true }))

 rotasAtendimentos(app);

return app
}

Mas normalmente terremos vários controllers, e o consign nos facilita muito a vida nesse sentido :)

Compreendeu? Qualquer coisa estou à disposição!

Abraços e Bons Estudos :)

Foi totalmente claro, abraço. Obrigado.