1
resposta

Problema com a data

Minha validação e código estão funcionando normalmente, contudo quando coloco alguma data pra frente da data atual sempre tenhos problemas. Por exemplo quando digito no POSTMAN na parte de data o dia 12/10/2021 sendo o dia 12/10/2021 tenho erro Visual Code. No postman "da certo" Segue o erro que aparece para mim:

_http_outgoing.js:561
    throw new ERR_HTTP_HEADERS_SENT('set');
    ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:561:11)
    at ServerResponse.header (C:\Users\maria\OneDrive\Área de Trabalho\web\node_modules\express\lib\response.js:771:10)
    at ServerResponse.send (C:\Users\maria\OneDrive\Área de Trabalho\web\node_modules\express\lib\response.js:170:12)
    at ServerResponse.json (C:\Users\maria\OneDrive\Área de Trabalho\web\node_modules\express\lib\response.js:267:15)
    at Query.onResult (C:\Users\maria\OneDrive\Área de Trabalho\web\models\atendimentos.js:38:37)
    at C:\Users\maria\OneDrive\Área de Trabalho\web\node_modules\mysql2\lib\commands\query.js:90:16
    at processTicksAndRejections (internal/process/task_queues.js:77:11) {
  code: 'ERR_HTTP_HEADERS_SENT'
}
[nodemon] app crashed - waiting for file changes before starting...
const moment = require('moment')
const conexao = require('../infraestrutura/conexao')

class Atendimentos{
    adiciona(atendimento,res){
        const dataCriacao = moment('2021-10-12').format('YYYY-MM-DD HH:mm:ss')
        const data = moment(atendimento.data,'DD/MM/YYYY').format('YYYY-MM-DD HH:mm:ss')

        const dataValida = moment(data).isSameOrAfter(dataCriacao)
        const clienteValido = atendimento.cliente.length >= 5
        const validacoes = [
            {
                nome:'data',
                valido: dataValida,
                mensagem:'Data deve ser maior ou igual que a data atual'
            },
            {
                nome:'cliente',
                valido: clienteValido,
                mensagem: 'Cliente deve ter no minimo 5 caracteres'
            }
        ]

        const erros = validacoes.filter(campo => !campo.valido)
        const existemErros = erros.length

        if(existemErros){
            res.status(400).json(erros)
        }else{
            const atendimentoDatado = {...atendimento,dataCriacao,data}

            const sql = 'INSERT INTO Atendimentos SET ?'

            conexao.query(sql, atendimentoDatado,(erro,resultados)=>{
                if(erro){
                    res.status(400).json(erro)
                }else{
                    res.status(201).json(resultados)
                }
            })
        }

    }
}

module.exports = new Atendimentos

SOCORRO PQ JA N SEI MAIS OQ FAZER

1 resposta

Boa tarde Maria, tudo certo?

Eu fiz uma busca utilizando o repositório do curso como base e creio que tenha encontrado qual é a diferença:

Na linha 39, deveria ser enviado como um retorno o atendimento na resposta da requisição, mas você está tentando responder o valor resultados.

Tente substituir o trecho da conexao.query do seu projeto pelo seguinte:

conexao.query(sql, atendimentoDatado, (erro, resultados) => {
    if(erro) {
        res.status(400).json(erro)
    } else {
        res.status(201).json(atendimento)
    }
})

Espero ter ajudado e bons estudos!