【发布时间】:2018-11-13 00:28:34
【问题描述】:
我有以下 Mongoose 用户架构:
postCreated:{
type: Array,
default: []
}
其中包含属于该用户的帖子对象数组。我计划执行以下操作:当我删除特定帖子时,我将该帖子的 id 和创建的用户的用户名传递给后端,并希望它将帖子从 Post 模式和 postCreated 中删除所属用户
server.del('/posts',(req,res,next)=>{
const {id,username} = req.body;
User.findOne({username}).then(user => {
console.log(user.postCreated)
user.postCreated.filter(post => {
post._id !== id;
});
console.log(user.postCreated)
});
Posts.findOneAndRemove({_id: id}).then((post) => {
if(!post){
return next(new errors.NotFoundError('Post not found'));
}
res.send(post);
})
.catch((e) => {
return next(new errors.BadRequestError(e.message));
});
});
但是,帖子只是从 Post Model 中删除,而不是从 User Model 的 postCreated 中删除,这意味着 user.postCreated.filter 不起作用。
感谢 Jack,我尝试了以下方法,但似乎没有解决问题:
User.update(
{ username },
{ $pull: { postCreated: {_id: id} } },
{ multi: true }
);
有什么办法可以解决这个问题吗?
非常感谢任何帮助。
【问题讨论】:
-
你需要使用
$pull从数组中移除一个元素