Quando envio um POST recebo a seguinte mensagem de erro:\
TypeError: Cannot read property 'length' of undefined
at Atendimento.adiciona (C:\Users\NINO\Documents\Dev\Alura\Node Rest\models\atendimentos.js:46:35)
at C:\Users\NINO\Documents\Dev\Alura\Node Rest\controllers\atendimentos.js:23:21
Código do models/atendimentos:
const { default: axios } = require("axios")
const moment = require("moment")
const conexao = require("../infraestrutura/database/conexao")
const repositorio = require("../repositorios/atendimentos")
class Atendimento {
constructor() {
//já vai retornar true ou false
this.dataEhValida = ({data, dataCriacao}) => moment(data).isSameOrAfter(dataCriacao)
this.nomeEhValido = tamanho => tamanho >= 5
this.valida = ({...parametros}) => {
this.validacoes.filter(campo => {
const {nome} = campo
const parametro = parametros[nome]
return !campo.valido(parametro)
})
}
this.validacoes = [
{
nome: "data",
valido: this.dataEhValida,
mensagem: "A data do agendamento deve ser menor do que a data de criação."
},
{
nome: "cliente",
valido: this.nomeEhValido,
mensagem: "O nome do cliente deve conter no mínimo cinco caracteres"
}
]
}
adiciona(atendimento) {
const dataCriacao = moment().format("YYYY-MM-DD HH:MM")
const data = moment(atendimento.data, "DD/MM/YYYY").format("YYYY-MM-DD HH:MM")
//vai verificar os objetos cujas chaves "valido" sejam == false
const parametros = {
data: {data, dataCriacao},
cliente: {tamanho: atendimento.cliente.length}
}
const erros = this.valida(parametros)
const exitemErros = erros.length
if(exitemErros) {
return new Promise((resolve, reject) => {
reject(erros)
})
} else {
const atendimentoDatado = {...atendimento, dataCriacao, data}
return repositorio.adiciona(atendimentoDatado)
.then((resultado) => {
const id = resultado.insertId
return {...atendimento, id}
})
}
}
//outros métodos...
}
module.exports = new Atendimento()
Código do controllers/atendimentos:
const Atendimento = require("../models/atendimentos.js")
module.exports = app => {
(...)
app.post("/atendimentos", (req, res) => {
const atendimento = req.body
Atendimento.adiciona(atendimento)
.then(atendimentoCadastrado => res.status(201).json(atendimentoCadastrado))
.catch((erros) => {
res.status(400).json(erros)
//res.status(400).redirect("https://http.cat/400")
})
})
//outras funções do CRUD...
}