用快递删除一个mongoose条目

我是整个平均堆栈的新手。 我即将创build一个CRUD应用程序。 我已经有了简单的,C和R,但现在我想去D.不幸的是,当我试图删除一个条目,我得到一个500错误。 我的路线正在调用,但之后没有任何反应。

HTML

<div ng-repeat="article in articles"> <form ng-click="deleteArticle(article)"> <button type="submit" class="btn btn-primary">Delete</button> </form> </div> 

angular

在我的控制器中的部分..

 $scope.deleteArticle = function(article) { articlesFactory.removeArticle(article) } 

而在工厂里被召唤的部分:

 art.removeArticle = function(article) { return $http.put('/articles/' + article._id + '/remove') }; 

路线

 ... router.param('article', function(req, res, next, id) { var query = Article.findById(id); query.exec(function (err, article) { if (err) { return next(err); } if (!article) { return next(new Error("Unable to find this article.")); } req.article = article; return next(); }); }); ... router.put('/articles/:article/remove', function(req, res, next) { console.log("I arrived in the routes") req.article.remove(function(err, article) { if (err) { return next(err); } res.json(article); }); }); ... 

模型

 var ArticleSchema = new mongoose.Schema({ title: String, content: String, likes: { type: Number, default: 0 }, comments: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Comment' }] }); ArticleSchema.methods.remove = function(callback) { this.remove(callback); 

应该使用HTTP的删除方法。 并尝试这个逻辑,它是从angular-fullstack控制器模板(我build议使用它来创build自己的端点, 这里是链接 ):

 router.delete('/articles/:id/remove', function(req, res, next) { Article.findById(req.params.id, function (err, article) { if(err) { return next(err); } if(!article) { return res.send(404); } article.remove(function(err) { if(err) { return handleError(res, err); } return res.send(204); }); }); }); 

你需要更新这个以及使用delete:

 art.removeArticle = function(article) { return $http.delete('/articles/' + article._id + '/remove') }; 

我知道这是一个旧的post,但我偶然发现,因为我有同样的问题,所以也许这可能是有用的人。

在尝试你的代码并使用了TommyMac的答案之后,这是我的结果,应该有所帮助:

控制器 :你的控制器部分是好的:

 $scope.deleteArticle = function(article) { articlesFactory.removeArticle(article) }