我有一组用户和一组文章。用户将多个文章放在一个数组中。现在,我试图从MongoDB中用户的文章数组中删除文章。到目前为止,我有
exports.delete = function(req, res, next) {
const articleId = req.params.id;
Article.findOneAndRemove({_id: articleId})
.then((deletedArticle)=> {
const authorId = deletedArticle.author;
console.log("AUTHOR:"+authorId);
User.update( { _id: authorId }, { $pull: { articles: [ _id: deletedArticle.id ] } } )
res.status(204).send(deletedArticle)
})
.catch(next);
}
此确实删除了这篇文章本身,但是没有引用保存在User对象所保存的数组中的文章。我在这里做什么错了?
答案 0 :(得分:0)
尝试将查询中的方括号更改为大括号:
User.update( { _id: authorId }, { $pull: { articles: { _id: deletedArticle.id } } } )
显然,这将要求articles数组中的_id与article集合相同,这取决于您如何填充数组(我觉得您在做的那部分是对的,但只是想提一提这种可能性前)。