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
之前调用位置处理程序有机会完成。
在做 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
之前调用位置处理程序有机会完成。