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

Aonde que foi setado o erro e resultados?

Ao decorrer do código, a instrutura realiza diversas vezes o esquema do if com o erro e resultado

if(erro){
  res.status(400).json(erro);
  } else {
  res.status(200).json(resultados);
}

Porem agora que foi me surgir a duvida, as variaveis erro e resultados estão escrita em portugues, e eu procurei e não achei aonde que setamos o valor delas, sendo assim, essas variaveis ja vem da biblioteca como padrão?

Caso a gente tenha setado esses valores em alguma parte do código, podem me dizer qual aula que foi

1 resposta
solução!

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!