1
resposta

TypeError: Cannot read property 'length' of undefined

Estou com o seguinte erro:

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

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

class Atendimento {

    adciona(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,
                mensage: 'Data deve ser maior ou igual a data atual.'
            },
            {
                nome: 'cliente',
                valido: clienteEValido,
                mensagem: "Cliente deve ter pelo menos 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 ?'

            conection.query(sql, atendimentoDatado, (erro, resultados) => {
                if (erro) {
                    res.status(400).json('erro')

                } else {
                    res.status(201).json(resultados)
                }
            })
        }

    }


}
module.exports = new Atendimento
1 resposta

Provavelmente seu objeto está indo como undefined, tenta dar um console.log as vezes é algum detalhe bobo. Mas tudo leva a crer que ele ja chega como undefined.