MEAN堆栈用户删除

时间:2015-04-09 18:05:07

标签: angularjs mean-stack

我在/users网址上有一个包含删除按钮的用户列表。我的删除路线如下所示:

app.route('/users/:userId')
    .get(users.read)
    .put(users.updateById)
    .delete(users.delete);
app.param('userId', users.userById);

但问题是,我的删除按钮在/users网址上调用了删除,因此我收到了DELETE http://localhost:3000/users 404 (Not Found)。我怎么解决这个问题?我的控制器remove()函数你可以在下面看到。我怎样才能将'/user/' + user._id传递给它?仅从范围正确删除用户:(

$scope.remove = function(id) {
    var user = $scope.users[id];
    var modalOptions = {
        closeButtonText: 'Cancel',
        actionButtonText: 'Delete user',
        headerText: 'Delete ' + user.displayName + '?',
        bodyText: 'Are you sure you want to delete this user?'
    };

    modalService.showModal({}, modalOptions).then(function() {
        if (user) {
            user.$remove();

            for (var i in $scope.users) {
                if ($scope.users[i] === user) {
                    $scope.users.splice(i, 1); // remove item from scope
                }
            }
        }
    });

};

用户服务是mean.js安装的基础

angular.module('users').factory('Users', ['$resource',
    function($resource) {
        return $resource('users', {}, {
            update: {
                method: 'PUT'
            }
        });
    }
]);

1 个答案:

答案 0 :(得分:0)

默认情况下,

angular资源有以下方法:get,save,query,remove,delete。除非另有说明,否则它们不会按照您需要的方式在URL中传递参数。在这种情况下,您需要指定remove方法并确保在URL中传递参数。

angular.module('users').factory('Users', ['$resource',
    function($resource) {
        return $resource('users', {}, { 
            update: {
                method: 'PUT'
            },
            remove: {
                method: 'DELETE',
                url: 'users/:id',
                params: {id: '@_id'}
            }
        });
    }
]);

这假设您的用户对象具有_id属性,这在平均堆栈中很常见。您应该设置get save并以相同的方式更新。