我有一个快速控制器来删除正在从页面中删除帖子的用户帖子,但不删除User.posts数据。
function deleteRoute(req, res) {
Post
.findById(req.params.id)
.exec()
.then((post) => {
if(!post) return res.status(404).send('Not found');
return post.remove()
.then((thisUser)=>{
if (!Array.isArray(thisUser.posts)) {
thisUser.posts = [];
}
thisUser.posts.slice(post.id);
thisUser.save();
res.redirect(`/users/${req.user.id}`);
});
})
.catch((err) => {
res.status(500).end(err);
});
}
当我创建帖子时,用户的帖子计数会递增,但在删除时不会递减。我认为这可能发生在我试图切片post.id的地方,但我不确定如何解决它。感谢任何帮助!
答案 0 :(得分:0)
修正了以下内容:
function deleteRoute(req, res, next) {
Post
.findById(req.params.id)
.then((post) => {
if(!post) return res.notFound();
return post.remove();
})
.then((post) => {
console.log(post);
User
.findById(req.user.id)
.then((thisUser)=>{
const index = thisUser.posts[thisUser.posts.length-1];
console.log('post deleted:' + index);
if (index === thisUser.posts[thisUser.posts.length-1]) {
thisUser.posts.splice(index, 1);
return thisUser.save();
}
});
})
.then(() => {
res.redirect(`/users/${req.user.id}`);
})
.then(() => res.status(204).end())
.catch(next);
}