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

ERRO NO TERMINAL E NO POSTMAN

const moment = require('moment') const axios = require('axios') 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 dataEhValida = moment(data).isSameOrAfter(dataCriacao)
    const clienteEhValido = (atendimento.cliente.length >= 5)

    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)
    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 {
                const id = resultados.insertId
                res.status(201).json({ ...atendimento, id })
            }
        })
    }
}

lista(res) {
    const sql = 'SELECT * FROM Atendimentos'

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

buscaPorId(id, res) {
    const sql = `SELECT * FROM Atendimentos WHERE id=${id}`

    conexao.query(sql, async (erro, resultados) => {
        const atendimento = resultados[0]
        const cpf = atendimento.cliente
        if (erro) {
            res.status(400).json(erro)
        } else {
            const { data } = await axios.get(`http://localhost:8082/${cpf}`)

            atendimento.cliente = data

            res.status(200).json(atendimento)
        }
    })
}

altera(id, valores, res) {
    if (valores.data) {
        valores.data = moment(valores.data, 'DD/MM/YYYY').format(
            'YYYY-MM-DD HH:MM:SS'
        )
    }
    const sql = 'UPDATE Atendimentos SET ? WHERE id=?'

    conexao.query(sql, [valores, id], (erro, resultados) => {
        if (erro) {
            res.status(400).json(erro)
        } else {
            res.status(200).json({ ...valores, id })
        }
    })
}

deleta(id, res) {
    const sql = 'DELETE FROM Atendimentos WHERE id=?'

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

}

module.exports = new Atendimento()

2 respostas

erro terminal:

TypeError: Cannot read property 'length' of undefined at Atendimento.adiciona (C:\Users\Usuário\Projeto\models\atendimentos.js:13:54) at C:\Users\Usuário\Projeto\controllers\atendimentos.js:18:19 at Layer.handle [as handle_request] (C:\Users\Usuário\Projeto\node_modules\express\lib\router\layer.js:95:5) at next (C:\Users\Usuário\Projeto\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (C:\Users\Usuário\Projeto\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (C:\Users\Usuário\Projeto\node_modules\express\lib\router\layer.js:95:5) at C:\Users\Usuário\Projeto\node_modules\express\lib\router\index.js:281:22 at Function.process_params (C:\Users\Usuário\Projeto\node_modules\express\lib\router\index.js:335:12) at next (C:\Users\Usuário\Projeto\node_modules\express\lib\router\index.js:275:10) at C:\Users\Usuário\Projeto\node_modules\body-parser\lib\read.js:130:5

solução!

erro postman:

TypeError: Cannot read property 'length' of undefined    at Atendimento.adiciona (C:\Users\Usuário\Projeto\models\atendimentos.js:13:54)    at C:\Users\Usuário\Projeto\controllers\atendimentos.js:18:19    at Layer.handle [as handle_request] (C:\Users\Usuário\Projeto\node_modules\express\lib\router\layer.js:95:5)    at next (C:\Users\Usuário\Projeto\node_modules\express\lib\router\route.js:137:13)    at Route.dispatch (C:\Users\Usuário\Projeto\node_modules\express\lib\router\route.js:112:3)    at Layer.handle [as handle_request] (C:\Users\Usuário\Projeto\node_modules\express\lib\router\layer.js:95:5)    at C:\Users\Usuário\Projeto\node_modules\express\lib\router\index.js:281:22    at Function.process_params (C:\Users\Usuário\Projeto\node_modules\express\lib\router\index.js:335:12)    at next (C:\Users\Usuário\Projeto\node_modules\express\lib\router\index.js:275:10)    at C:\Users\Usuário\Projeto\node_modules\body-parser\lib\read.js:130:5