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.