Express Mongoose:从其DBRef数组中删除架构和所有项
我是NodeJS和Mongo的新手,我想知道是否有人能帮我解决这个问题。我想删除一个模式,它是一篇博客文章,其中包含一个引用“注释”模式的数组 以下是模型:Express Mongoose:从其DBRef数组中删除架构和所有项,express,mongoose,Express,Mongoose,我是NodeJS和Mongo的新手,我想知道是否有人能帮我解决这个问题。我想删除一个模式,它是一篇博客文章,其中包含一个引用“注释”模式的数组 以下是模型: var blogSchema = new Schema({ title: String, author: String, body: String, likes: { type: Number, default: 0 }, comments: [{ type: Schema.Types.ObjectI
var blogSchema = new Schema({
title: String,
author: String,
body: String,
likes: { type: Number, default: 0 },
comments: [{ type: Schema.Types.ObjectId, ref: 'Comment' }],
date: { type: Date, default: Date.now }
});
var commentSchema = new Schema({
body: String,
author: String,
post: {type: Schema.Types.ObjectId, ref: 'Post'}
});
以下是我如何找到我的博客帖子:
router.param('post', function(req, res, next, id){
var query = Blog.findById(id);
query.exec(function (err, blogPost){
if(err){
return next(err);
}
if(!blogPost){
return next(new Error("Can't find post"));
}
req.blogPost = blogPost;
return next();
});
});
以下是我试图找出的代码:
router.delete('/posts/:post/remove', function(req, res, next){
var postToRemove = req.blogPost;
postToRemove.remove(function(req, res, next){
//... what should I do in here?
}
}
谢谢你帮助大家 假设post query参数是要删除的帖子的标题,您可以尝试以下:
router.delete('/posts/:post/remove', function(req, res, next){
var postToRemove = req.params.post;
Blog.remove({title: postToRemove}, function(req, res, next){
if (err) return next(err);
res.json(post);
}
}
或者,您可以使用findOneAndRemove()
方法:
router.delete('/posts/:post/remove', function(req, res, next){
var postToRemove = req.params.post;
Blog.findOneAndRemove({title: postToRemove}, function(req, res, next){
if (err) return next(err);
res.json(post);
}
}
或者,如果您事先知道id,您可以使用以下findbyiandremove()
方法:
router.delete('/posts/:id/remove', function(req, res, next){
Blog.findByIdAndRemove(req.params.id, req.body, function (err, post) {
if (err) return next(err);
res.json(post);
});
}
谢谢你的回复!post查询参数实际上返回一个通过其id找到的博客模式。此外,上面显示的方法是否也会删除所有注释?comments.remove().exec(function(err){});删除所有