Node-express项目--个人简历:删除某条个人经历experience 删除整个User信息

Posted 安之ccy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node-express项目--个人简历:删除某条个人经历experience 删除整个User信息相关的知识,希望对你有一定的参考价值。

删除个人经历

功能描述:根据输入的experience_id删除个人经历

  • 寻找与输入的exp_id匹配的experience,删除并保存修改
  1. 遍历每个experience,将其id与exp_id比较,符合则记录其索引位置
  2. 根据索引位置删除experience
  3. 保存修改,同步到数据库

在路由文件profile.js中:

//$route DELETE api/profile/experience/:exp_id
//@desc 删除个人经历接口
//@access private
router.delete("/experience/:exp_id", passport.authenticate("jwt", { session: false }), (req, res) => {

    // 寻找该用户的profile数据
    Profile.findOne({ user: req.user.id })
        .then(profile => {
            // 寻找与输入的experience的id匹配的经历
            const removeId = profile.experience
                .map(item => item.id)
                .indexOf(req.params.exp_id)
            // 删除该经历
            profile.experience.splice(removeId, 1);
            // 保存修改
            profile.save()
                .then(profile => {
                    res.json(profile)
                })
        .catch(err => res.status(404).json(err))
        })

})

postman测试:

原本数据库里test3账号的profile信息是这样的:
在这里插入图片描述

我们删除第0条数据,记得带上对应账号的未过期的token:

在这里插入图片描述
可以看到,刚刚那条经历已经被删除了,数据库里只剩下一条经历:

在这里插入图片描述

删除整个User信息

功能描述:删除当前用户的所有信息

  • 使用findOneAndRemove函数,通过req.user.id寻找当前用户信息;
  • 删除当前用户的profile数据
  • 删除当前用户的user数据

在路由文件profile.js中:

//$route DELETE api/profile
//@desc 删除整个用户接口
//@access private
router.delete("/", passport.authenticate("jwt", { session: false }), (req, res) => {

    // 寻找该用户的profile数据并删除
    Profile.findOneAndRemove({ user: req.user.id })
        .then(() => {
            // 删除该用户的user信息
            User.findOneAndRemove({ _id: req.user.id })
                .then(() => {
                    res.json({ success: true })
                })
        })

        .catch(err => res.json(err))

})

postman测试:

数据库里test3账号的user信息是这样的:

在这里插入图片描述

profile信息是这样的:

在这里插入图片描述
postman模拟删除操作,删除成功则提示success:

在这里插入图片描述
这时再查看数据库,已经没有test3账号的任何信息
user中:
在这里插入图片描述
profile中:
在这里插入图片描述

以上是关于Node-express项目--个人简历:删除某条个人经历experience 删除整个User信息的主要内容,如果未能解决你的问题,请参考以下文章

Node-express项目--个人简历:搭建posts接口并实现评论点赞以及相关功能

Node-express项目--个人简历:搭建posts接口并实现评论点赞以及相关功能

Node-express项目--个人简历:搭建个人经历experience接口

Node-express项目--个人简历:搭建个人经历experience接口

Node-express项目--个人简历:添加token认证

Node-express项目--个人简历:register(注册)接口编写记录