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

app.put e app.delete não funcionam

Os métodos retornam o status 201 e exibe o log no console e não faz a ação no banco de dados

// cancelar pagamento
  app.delete('/pagamentos/pagamento/:id',function(req,res){

    var id = req.params.id;
    var pagamento = {};
    pagamento.id = id;
    pagamento.status =  'CANCELADO';

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

    pagamentoDao.atualiza(pagamento, function(erro,resultado){
      if(erro){
        console.log('erro ao cancelar pagamento: '+erro);
        res.status(500).send(erro);
      }else{
        console.log('pagamento cancelado !');
        res.status(201).json(pagamento);
      }

    });
  });
// alter pagamento
  app.put('/pagamentos/pagamento/:id',function(req,res){

    var id = req.params.id;
    var pagamento = {};
    pagamento.id =id;
    pagamento.status =  'CONFIRMADO';

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

    pagamentoDao.atualiza(pagamento, function(erro,resultado){
      if(erro){
        console.log('erro ao alterar pagamento: '+erro);
        res.status(500).send(erro);
      }else{
        console.log('pagamento alterado !');
        res.status(201).json(pagamento);
      }

    });
  });
PagamentoDao.prototype.atualiza = function(pagamento, callback) {
    this._connection.query('update pagamentos set status = ? where id = ? ', [pagamento.status, pagamento.id], callback);
}

Acredito que seja a forma pelo qual estou passando o parametro pelo put. Como ficaria ?

2 respostas

Opa Fabricio, como está a sua chamada de teste para estes endpoints da api? Os console.log não estão aparecendo né?

solução!

Boa tarde Professor:

Como está a sua chamada de teste para estes endpoints da api?

Usando o postman passo a seguinte URL: localhost:3000/pagamentos/pagamento/:id=3

retorna:

{
    "id": ":id=3",
    "status": "CONFIRMADO"
}

e no console: pagamento alterado !

Os console.log não estão aparecendo né?

O console está ok todas as mensagens estão aparecendo.

A aplicação não tem erro porque eu usei o método curl de deu certo mais uma questão de uso do posman. Talvez esteja passando a URL de forma errada. Se eu passar a url assim localhost:3000/pagamentos/pagamento/3 ele também funciona.