2017-02-07 6 views
0

Когда я называю «получить» функции прохождения контакта идентификатора как пары, она работает нормально, но когда я называю «удалить» функции не находит маршрут и возвращает сообщение об ошибке в консолиУдалить маршрута не работает в экспрессе/angularjs

консольный браузер:

"DELETE http: // localhost: 3000/contacts? Id = 1 404 (Not Found) 

    Object 
    config: 
    data: "Cannot DELETE /contatos?id=1↵" 
    headers :(name) 
    status:404 
    statusText:"Not Found" 
//routes\contato.js 
    module.exports = function(app) { 
     var controller = app.controllers.contato; 

     app.route('/contatos/:id') 
      .get(controller.obtemContato) 
      .delete(controller.removerContato); 

    }; 
//controllers\contato.js 
module.exports = function(app) { 
    var controller = {} 

    var contatos = [ 
     {_id: 1, nome: 'Contato Emplo 1', 
      email: '[email protected]'}, 
     {_id: 2, nome: 'Contato Exemplo 2', 
      email: '[email protected]'}, 
     {_id: 3, nome: 'Contato Exemplo 3', 
      email: '[email protected]'} 
    ]; 

    controller.listaContatos = function(req, res) { 
     res.json(contatos); 
    } 

    controller.obtemContato = function(req, res) { 
     console.log(req.params.id); 
     var idContato = req.params.id; 
     var contato = contatos.filter(function(contato) { 
      return contato._id == idContato; 
     })[0]; 
     contato ? 
      res.json(contato) : 
      res.status(404).send('Contato não encontrado'); 
    } 

    controller.removerContato = function(req, res) { 
     console.log('TESTE REMOVER'); 
     var idContato = req.params.id; 
     contatos = contatos.filter(function(contato) { 
      return contato._id != idContato; 
     }); 
     res.send(204).end(); 
     console.log('API: removeContato: ' + idContato); 
    } 

    return controller; 
} 

// угловой контроллер

angular.module('contatooh').controller('ContatosController', 
    function($scope, $resource) { 

     $scope.contatos = []; 

     $scope.filtro = ''; 

     var Contato = $resource('/contatos'); 

     $scope.init = function() { 
      buscaContatos(); 
     } 

     function buscaContatos() { 
      Contato.query(
       function(contatos) { 
        $scope.contatos = contatos; 
       }, 
       function(erro) { 
        console.log("Não foi possível obter a lista de contatos"); 
        console.log(erro); 
       } 
      ); 
     } 

     $scope.remove = function(contato) { 
      Contato.delete({id: contato._id}, 
       buscaContatos, 
       function(erro) { 
        console.log('Não foi possível remover o contato'); 
        console.log(erro); 
       } 
      ); 
     }; 


     $scope.init(); 

    }); 

ответ

1

Похоже, вы не делаете запрос в соответствующий конечной точке. Похоже, вы пытаетесь сделать запрос DELETE на номер /contatos?id=1, а ваши маршруты настроены для /contatos/:id. Попробуйте сделать DELETE запрос /contatos/:id, изменив $resource URI:

var Contato = $resource('/contatos/:id');

Смежные вопросы