ExpressJS deleteRoute不更新用户数据

时间:2018-02-08 12:16:39

标签: javascript express controller

我有一个快速控制器来删除正在从页面中删除帖子的用户帖子,但不删除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的地方,但我不确定如何解决它。感谢任何帮助!

1 个答案:

答案 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);
}