Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Retorna erro no POST

Quando realizo um POST ele retorna erro no cliente e na data, as vezes só no cliente, mesmo com os valores corretos e sem mudar os valores, o postman oscila a resposta, as vezes erro no cliente e data outra hora só no cliente.

const moment = require('moment')

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

class Atendimento {
    adiciona(atendimento, res){
        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 dataEValida = moment(data).isSameOrAfter(dataCriacao)
        const clienteEValido = atendimento.cliente.length >= 5 

        const validacoes = [
            {
                nome: 'data',
                valido: dataEValida,
                mensagem: 'Data deve ser maior ou igual a data atual'

            },
            {
                nome: 'cliente',
                valido: clienteEValido,
                mensagem: 'Cliente deve ter pelo menos cinco 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 Atendimento
3 respostas

Boa tarde Lucas, tudo certo?

Uma solução que eu sugiro para que você possa prosseguir para os cursos de ORM e ter implementações mais robustas para lidar com datas é receber e formatar os valores desse projeto apenas como YYYY-MM-DD e lidar com eles assim por enquanto.

Sendo assim, as primeiras linhas do método adiciona() ficariam tipo:

const dataCriacao = moment().format('YYYY-MM-DD')
const data = moment(atendimento.data, 'YYYY-MM-DD').format('YYYY-MM-DD')

E você deve passar as datas para a API no mesmo formato: YYYY-MM-DD. Por exemplo, o dia 15 de fevereiro de 2022 ficaria 2022-02-15

Isso deve te ajudar por ora, mas qualquer coisa é só avisar. Continue assim e bons estudos!

solução!

Agora ele retorna esse erro dizendo que nao existe a coluna servico, mas ela existe.

{ "code": "ER_BAD_FIELD_ERROR", "errno": 1054, "sqlState": "42S22", "sqlMessage": "Unknown column 'servico ' in 'field list'", "sql": "INSERT INTO Atendimentos SET cliente = 'lucas', pet = 'sonic', servico = 'tosa', status = 'agendado', observacoes = 'muito bonzinho', data = '2021-12-12', dataCriacao = '2021-11-22'" }

Boa tarde Lucas, tudo certo?

Talvez você tenha adicionado o campo mas tenha esquecido de "dropar" a tabela e criar uma nova com os campos. Lembre-se de adicionar esses campos no arquivo tabelas.js.

E eu sugiro não se preocupar muito com esses problemas do tipo por ora, dado que você esteja entendendo o curso. Mais adiante, nos cursos de Node.js com ORM você vai ser capaz de abstrair essas partes do processo e ter um fluxo mais robusto de desenvolvimento.

Espero ter ajudado e bons estudos!