const {Router} = require('express') const PessoasController = require('../controllers/PessoaController')
const router = Router()
router.get('/pessoas', PessoasController.pegarTodasAsPessoas)
module.exports = router
const {Router} = require('express') const PessoasController = require('../controllers/PessoaController')
const router = Router()
router.get('/pessoas', PessoasController.pegarTodasAsPessoas)
module.exports = router
Olá, Isabela!
O metodo "get()" do seu router (instância do Router do express) espera receber um ou mais "callbacks" como parâmetro após o primeiro parâmetro que é a rota. Um "callback" é basicamente uma função passada como parâmetro para outra função, e esse callback será invocado e tratado apenas dentro da função na qual ele foi passado como parâmetro (nesse caso o "get()").
Esse callback esperado pelo "get()" precisa ser uma função que receba como parâmetros o request, response e next (next apenas em alguns casos, não é o ponto principal aqui). No seu PessoasController imagino que o método "pegarTodasAsPessoas" esteja definido para receber esses parâmetros com algo parecido com:
async pegarTodasAsPessoas(req, res) {
// tratativa
}
Assim, imagine que em algum lugar dentro do método "get()" lá do Router do express (ou qualquer outra função de métodos http, post, put, etc.) eles invocarão a sua função callback (pegarTodasAsPessoas) e passarão o req e res como parâmetros.
Abaixo deixo um exemplo simples para entender o funcionamento de um callback e a passagem de parâmetros para ele.
function myLogger(qualquerCoisa) {
console.log(qualquerCoisa);
}
function myCalculator(num1, num2, myCallback) {
let sum = num1 + num2;
myCallback(sum);
}
myCalculator(5, 5, myLogger);
No exemplo temos duas funções: myLogger apenas recebe um parâmetro qualquer e loga no console; myCalculator recebe 3 parâmetros, os dois primeiros são números que deseja somar e o terceiro é uma função qualquer para fazer o que quiser com o resultado da soma. Como passamos a função myLogger, ela vai apenas logar o resultado da soma, mas poderia ser por exemplo uma função que multiplicasse o resultado da soma por 23, ou outra que enviasse o resultado para seu e-mail. Enfim, as possibilidades são múltiplas.
Mas veja que essa função callback que myCalculator espera deve ser capaz de receber apenas o parâmetro da soma, como dentro de myCalculator é a forma que invocaremos a função callback. Se myLogger não recebesse nenhum parâmetro ou esperasse mais de 1, teríamos um erro. No seu caso seria exatamente um erro que aconteceria caso o método do seu controller não esperasse receber nenhum parâmetro.
Em resumo, o método do Router espera apenas que você passe como parâmetro uma função válida que possa tratar o request e o response. Passando uma função válida, digamos que o resto é com eles, tratado diretamente na biblioteca Express.
Espero ter ajudado! Se ficou alguma dúvida não deixe de perguntar.
Nossa. Ótima explicação. Muito obrigado.