2
respostas

argument callback must be a function when provided

Fala galera, beleza?

Seguinte, eu estava tendo esse problema de argument callback must be a function when provided e depois de muito tempo eu consegui descobrir o que é este erro.

Você deve ter algo parecido com isso no seu atendimentos.js dentro da pasta models:

const moment = require('moment')
const conexao = require('../infraestrutura/conexao')

class Atendimento {
    adiciona(atendimento) {
        const dataCriacao = moment().format('YYYY-MM-DD HH:MM:SS')
        const data = moment(atendimento.data, 'DD/MM/YYYY').format('YYYY-MM-DD HH:mm:ss')
        const atendimentoDatado = {...atendimento, dataCriacao, data}
        const sql = 'INSERT INTO Atendimentos SET ?'

        conexao.query(sql, atendimentoDatado, atendimento, (erro, resultados) => {
            if(erro){
                console.log(erro)
            } else {
                console.log(resultados)
            }
        })
    }
}

module.exports = new Atendimento

Vejam que a linha conexao.query possuem 4 parâmetros. Todavia, essa parte está errada, pois o módulo mysql do npm, só aceita 3 parâmetros dentro de sua query, sendo o primeiro a string do sql, o segundo o objeto passado e o terceiro o callback.

linha errada:

conexao.query(sql, atendimentoDatado, atendimento, (erro, resultados) => {

Para resolver isso, tenham certeza que a sua query seja feita da seguinte forma:

conexao.query(sql, atendimentoDatado, (erro, resultados) => {

Não sendo mais necessário passar o atendimento sozinho, pois a const atendimentoDatado já está recebendo os outros parâmetros de atendimento através do REST OPERATOR, que nada mais é do que os 3 pontos seguido do objeto.

const atendimentoDatado = {**...atendimento**, dataCriacao, data}

Lógico, se você comparar ao que está no vídeo/texto, verá que o erro foi meu, todavia, é importante ressaltar essa informação, para que ninguém deixe passar isso despercebido.

PS: Estou postando isso como algo a fim de sanar as dúvidas das pessoas, visto que temos um tópico aberto a mais de 4 semanas sem resposta.

2 respostas

Boa tarde Rafael, tudo certo?

Muito obrigado por compartilhar conosco esta explicação. Relatar o que estamos desenvolvendo da forma como você fez é uma ótima prática para ter uma base forte no conhecimento e ainda auxilia os colegas que estão com dificuldades em situações similares.

Além disso, você teve o interesse de continuar e visitar a documentação da biblioteca para ver a forma mais adequada de se utilizar o pacote. Meus parabéns.

Espero que você continue assim e bons estudos!

Olá, João!

Tudo ótimo.

O curso ensina muita coisa, mas existem muito mais coisas que estão explicadas na documentação das libs que usamos. Achei pertinente ler, visto que eu não fazia a menor ideia de como funcionava SQL e o MYSQL.

Um abraço e rumo ao final deste curso!