Bom dia Lucas, tudo certo?
Vou pegar um trecho maior do código pra explicar onde essas variáveis foram declaradas, vamos lá:
conexao.query(sql, (erro, resultados) => {
if(erro) {
res.status(400).json(erro)
} else {
res.status(200).json(resultados)
})
Nesse trecho, conexao
é uma instância de mysql.createConnection()
lá em conexao.js
Essa classe tem o método query
. Podemos ver na documentação do pacote npm mysql
que esse método precisa que você passe 2 parâmetros:
- Uma string que contenha uma query sql
- Uma função de callback que vai lidar com os resultados da query
Então precisamos criar uma função que receba os erros, os resultados e os campos alterados.
Como nós quem criamos a função, podemos dar os nomes que quisermos para cada um desses parâmetros, desde que estejamos respeitando a ordem: primeiro erros, depois resultados e depois os campos.
Então poderíamos fazer o seguinte:
funcaoCallback(erro, resultados){
if(erro) {
res.status(400).json(erro)
} else {
res.status(200).json(resultados)
}
conexao.query(sql, funcaoCallback)
Mas parece ter dois problemas aqui:
- Não estamos criando o atributo
fields
que a documentação pede - Teríamos várias funções soltas que provavelmente vamos usar em um lugar só
Para isso que vamos utilizar as arrow functions, elas nos permitem declarar uma função de forma mais simplificada e podemos utilizá-la dentro da chamada de um método, logo o resultado da aula ficou:
conexao.query(sql, (erro, resultados) => {
if(erro) {
res.status(400).json(erro)
} else {
res.status(200).json(resultados)
})
Onde o segundo parâmetro da função query foi uma arrow function, que é uma função sem nome definida por nós que tem os parâmetros erro
e resultados
e tem um bloco de código entre as {}
, assim podemos omitir os parâmetros que não utilizamos e ficariam à direita e não precisamos declarar uma função extra fora da chamada.
Temos um artigo que explica melhor o funcionamento das arrow functions que pode esclarecer melhor as ideias. Recomendo fazer alguns exemplos e tentar entender como os nomes de parâmetros podem variar e ter o mesmo resultado.
Espero ter ajudado, caso ainda tenha algumas dúvidas é só recorrer no fórum. Bons estudos!