MEAN堆栈用户删除



我在/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中传递param。在这种情况下,您需要指定remove方法,并确保param在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属性,这在平均堆栈中很常见。您可能应该以相同的方式设置、保存和更新。

最新更新