MEAN 堆栈删除操作未正确完成。 ERR_EMPTY_RESPONSE

MEAN stack delete action is not done correctly. ERR_EMPTY_RESPONSE

在做 MEAN 教程时,我得到了从 mongo 删除文章的优秀代码(通过 mongoose)

    $scope.removeArticle = function(id){
        $http.delete('/articles/' + id)
            .success(function(data){
               console.log(data);
            });
        $location.path('/articles');
    }

console.log 给我打印了一个不错的 200, 但是 $location.path 永远不会发生,因为服务器端出了问题。 (错误在底部)

这是成功捕获$http请求的routes/articles.js文件

router.delete('/:id', function(req,res,next){
    var id = req.params.id;
    Article.removeArticle(id, function(err, article){
        if (err) console.log(err);
        res.location('/articles');
        res.redirect('/articles');
    });
});

这里是 models/article.js 成功从 db

中删除文章
module.exports.removeArticle = function(id, callback){   
    Article.findById(id, function(err, article){
        if(!article) return next(new Error('Could not load article'));
        article.remove(callback);
    });
};

我的服务器日志是这样说的

DELETE /articles 200 120010ms
DELETE /articles 200 120008ms
DELETE /articles 200 120006ms

我的 Chrome 控制台是这样说的

DELETE http://localhost:3000/articles net::ERR_EMPTY_RESPONSE

教程在此状态下结束。有人看到我错过了什么吗?

据我从您发布的代码中可以看出,这里的问题是路由实际上并未处理成功。您应该 return 一个 JSON 对象连同状态代码发送给客户端,而不是重定向调用。

成功删除后的重定向应该在客户端处理,但您需要将调用放在 .success 函数中,因为在某些情况下,可能会在 .success 之前调用位置处理程序有机会完成。