Quando dou o curl para inserir no banco, aparece todas as mensagens de erro, mesmo o pagamento.json estando correto. O que pode ser?
Quando dou o curl para inserir no banco, aparece todas as mensagens de erro, mesmo o pagamento.json estando correto. O que pode ser?
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!