我遵循Thinkster的MEAN堆棧教程(https://thinkster.io/tutorials/mean-stack),該教程沒有說明應該如何實現刪除操作。MongoDB:如何刪除已刪除帖子的所有評論?
目前,我有以下模式:
var PostSchema = new mongoose.Schema({
title: {type: String, required: true, maxlength: 140},
link: {type: String, required: true, maxlength: 300},
comments: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Comment' }]
});
var CommentSchema = new mongoose.Schema({
body: {type: String, maxlength: 200, minlength: 1},
post: { type: mongoose.Schema.Types.ObjectId, ref: 'Post' }
});
我有一個角工廠CRUD操作。我目前刪帖有以下工廠方法:
o.deletePost = function(id) {
return $http.delete('/posts/' + id, null, {}
}).success(function(res){
$window.location.href = '/#/home';
return res.data;
});
};
我的路由器刪除這個樣子的:
// DELETE a post
router.delete('/posts/:post', function(req, res, next) {
Post.remove({_id: req.params.post}, function(err, post) {
if (err)
res.send(err);
res.json({ message: 'Successfully deleted' });
});
});
不幸的是,當我刪除這樣的任何相關意見的地方留在後數據庫。所以,我的問題是如何刪除與帖子相關的所有評論,同時刪除該帖子?
我試過Google的答案,它似乎我應該以某種方式使用MongoDB的中間件。我試過了:
// Remove Post
module.exports.removePost = function(id, callback){
Post.findById(id, function (err, doc) {
if (err) {}
doc.remove(callback);
})
}
//Remove comments related to post
PostSchema.pre('remove', function(next) {
this.model('Comment').remove({ post: this._id }, next);
});
但是這並沒有做任何事情,因爲我不知道如何從我的CRUD工廠調用它。即使我做了也不知道它是否正確。所以,任何幫助將受到歡迎。 :)
你甚至沒有得到'成功刪除'的消息嗎?你有沒有試過用[Postman](https://www.getpostman.com/)進行測試? – gh0st
@ gh0st我用路由器信息更新了我的問題。 – catfood
@ gh0st我收到郵件,我可以刪除沒有問題的帖子。問題是,當我刪除一篇文章時,所有相關的評論都留在數據庫中「浮動」。我想刪除關聯的帖子時刪除它們。 – catfood