在做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');
});
});
以下是从db
成功删除文章的models / article.jsmodule.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
并且该教程以此状态结束。有人看到我错过了吗?
答案 0 :(得分:1)
从我发布的代码中可以看出,这里的问题是路线实际上并没有处理成功。您应该将JSON对象和状态代码一起返回给客户端,而不是重定向调用。
成功删除时的重定向应该在客户端处理,但是你需要将调用放在.success
函数中,因为在某些情况下,可能会在.success
之前调用位置处理程序有机会完成。