1
resposta

Erro validação -> length

TypeError: Cannot read property 'length' of undefined    at Atendimentos.adiciona (C:\Users\Laura Santos\Desktop\Rest-nodejs\models\atendimentos.js:12:53)    at C:\Users\Laura Santos\Desktop\Rest-nodejs\controllers\atendimento.js:11:21    at Layer.handle [as handle_request] (C:\Users\Laura Santos\Desktop\Rest-nodejs\node_modules\express\lib\router\layer.js:95:5)    at next (C:\Users\Laura Santos\Desktop\Rest-nodejs\node_modules\express\lib\router\route.js:137:13)    at Route.dispatch (C:\Users\Laura Santos\Desktop\Rest-nodejs\node_modules\express\lib\router\route.js:112:3)    at Layer.handle [as handle_request] (C:\Users\Laura Santos\Desktop\Rest-nodejs\node_modules\express\lib\router\layer.js:95:5)    at C:\Users\Laura Santos\Desktop\Rest-nodejs\node_modules\express\lib\router\index.js:281:22    at Function.process_params (C:\Users\Laura Santos\Desktop\Rest-nodejs\node_modules\express\lib\router\index.js:335:12)    at next (C:\Users\Laura Santos\Desktop\Rest-nodejs\node_modules\express\lib\router\index.js:275:10)    at jsonParser (C:\Users\Laura Santos\Desktop\Rest-nodejs\node_modules\body-parser\lib\types\json.js:101:7)

const moment = require('moment');
const conexao = require('../infra/conexao');

class Atendimentos { //cria o atendimentono banco
    adiciona(atendimento, res) {
        //Formatando data
        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');

        //validando data e cliente
        const dataEhValida = moment(data).isSameOrAfter(dataCriacao); //isSameOrAfter -> data é a mesma ou apos dataCriacao.
        const clienteEhValido = atendimento.cliente.length >= 5; //nome do cliente deve ter mais q cinco letras.
        const validacoes = [
            {
                nome: 'data',
                valido: dataEhValida,
                mensagem: 'Data deve ser maior ou igual a data atual'
            },
            {
                nome: 'cliente',
                valido: clienteEhValido,
                mensagem: 'Cliente deve ter pelo menos cinco caracteres'
            }
        ];

        const erros = validacoes.filter(campo => !campo.valido); //retorna os campos q não são validos | quais os erros
        const existemErros = erros.length; //se retornar zero é false

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

            const sql = 'INSERT INTO Atendimentos SET ?';

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

module.exports = new Atendimentos;
1 resposta

Ele não está reconhecendo a varíavel atendimento.cliente, por favor verificar se o path está correto no payload, utilize logs para verificar se a informação está chegando. pois essa variável chegouy no models/atendimento como undefined e como o erro diz não é possível pegar length ou trabalhar com uma varíavel undefined