删除不在express / angularjs中工作的路由

时间:2017-02-07 18:23:50

标签: angularjs express

当我打电话给" get" 函数将联系人ID作为参数传递时,它会正常工作,但是当我调用"删除&#34时; 函数找不到路由,并在控制台中返回错误消息

  

控制台浏览器:

"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: 'cont43343@empresa.com.br'},
        {_id: 2, nome: 'Contato Exemplo 2',
            email: 'cont2@empresa.com.br'},
        {_id: 3, nome: 'Contato Exemplo 3',
            email: 'cont3@empresa.com.br'}
    ];

    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 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 个答案:

答案 0 :(得分:1)

您好像没有向相应的端点发出请求。您似乎正在尝试向DELETE发出/contatos?id=1请求,并且您的路由已配置为/contatos/:id。尝试通过更改DELETE uri向/contatos/:id发出$resource个请求:

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