7
respostas

Problema Express Validator

Quando dou o curl para inserir no banco, aparece todas as mensagens de erro, mesmo o pagamento.json estando correto. O que pode ser?

7 respostas

Oi Luis. Blz?

Você pode enviar aqui o objeto json que você está enviando e como ficou a sua validação?

Se você está na parte do curso que já envolve a integração com o sistema de cartões, o objeto json do pagamento deve mudar um pouco, ganhando uma nova chave e essa mudança deve refletir também nas validações. Pode ser que seja isso.

Mas de qualquer forma, manda os códigos que a gente tenta achar o bug juntos! Blz?

Abraço!

Opa beleza mando sim

{ "forma_de_pagamento": "payfast", "valor": "10.87", "moeda": "BRL", "descricao": "descrição do pagamento" }

Valeu a ajuda!

Boa, Luis. E o código que faz a validação, como tá?

module.exports = function(app){

app.get('/pagamentos', function(req, res){ console.log('Recebida requisicao'); res.send('OK teste'); });

app.post("/pagamentos/pagamento",function(req, res) { var pagamento = req.body;

req.checkBody("forma_de_pagamento", "Forma de pagamento é obrigatória.").notEmpty(); req.checkBody("valor", "Valor é obrigatório e deve ser um decimal.").notEmpty().isFloat(); req.checkBody("moeda", "Moeda é obrigatória e deve ter 3 caracteres").notEmpty().len(3,3);

var errors = req.validationErrors();

if (errors){ console.log("Erros de validação encontrados"); res.status(400).send(errors); return; } console.log('processando pagamento...');

pagamento.status = 'CRIADO'; pagamento.data = new Date;

var connection = app.persistencia.connectionFactory();

var pagamentoDao = new app.persistencia.PagamentoDao(connection);

pagamentoDao.salva(pagamento, function(erro, resultado){ if (erro) { res.status(400).send(erro); }else{ console.log('pagamento criado'); res.json(pagamento); } });

}); }

Oi Luis, eu fiz o teste com o seu código e o seu Json e está tudo correto!

O que pode acontecer nessa situação é que o talvez o Node não esteja conseguindo interpretar o Json enviado da maneira correta.

Verifique se você está enviando o header Content-type: application/json no momento de enviar o curl, pois é ele que ensina o Node como fazer o parse do body.

Ficaria algo mais ou menos assim:

curl -X POST http://localhost:3000/pagamentos/pagamento -i -v -d @pagamento.json -H "Content-type: application/json"

Eu fiz um teste sem o header a aconteceu o que vc falou. Ele sempre cai em todas as validações e o motivo é o que eu expliquei acima. Má interpretação do Json pelo Node.

Imagino que isso deva resolver. Testa lá e se der certo, avisa aqui, blz?

Abraço!

Cara esse curl que voce me mandou não deu certo, mas consegui nesse aqui, que eu já estava usando:

curl http://localhost:3000/pagamentos/pagamento -X POST -v -H "Content-type: application/json" -d @files/pagamento.json | json_pp

agora o pq funcionou dessa vez nao sei kkk

Muito obrigado pela ajuda, ta mto fera seu curso vlw!!

Obrigado, Luis!

É provável que tenha sido a ausência do Header mesmo. =)

Pode marcar a dúvida como solucionada então?

E se tiver qualquer outra ao longo do curso, manda aqui que a gente tenta resolver junto de novo.

Abraço!