平均堆栈用户删除

MEAN stack user delete

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

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

但问题是,我的删除按钮在 /users url 上调用删除,所以我得到 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'
            }
        });
    }
]);

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 属性,这在平均堆栈中很常见。您可能应该以相同的方式设置获取保存和更新。