05-博客api接口项目实战之基本信息修改

辰漪
2022-01-20 / 0 评论 / 23 阅读 / 正在检测是否收录...

实现用户基本信息修改功能

允许修改 昵称(nickname) 头像(user_pic) 是否管理员(is_admin) 账号是否可用(is_use),需要进行token认证

实现步骤:
1. 创建字段校验对象
// schema/user.js
// 修改用户基本信息
const updateInfo = {
  query: {
    user_id
  },
  body: {
    nickname: joi.string().max(10).disallow(''),
    user_pic: joi.string().allow(''),
    is_admin: joi.number().integer().valid(0, 1),
    is_use: joi.number().integer().valid(0, 1)
  }
}
module.exports = {
  reg_login,
  updatePwd,
  updateInfo
}
2. 创建路由
// router/userInfo.js
const { updatePwd, updateInfo } = require('../router_handler/userinfo')
// 更新基本用户信息
router.put('/updateInfo', validateJoi(userSchema.updateInfo), updateInfo)
3. 创建路由处理函数
  • 检查数据库是否有该用户
  • 拿到更新的参数数据,更新该用户的数据库信息
// router_handler/userInfo.js
// 更新用户基本资料
const updateInfo = (req, res) => {
  const user_id = req.query.user_id
  const userInfo = req.body
  // console.log(req.user);
  if (JSON.stringify(userInfo) === '{}') return res.cc('请填写要修改的参数!')
  const sql = `select * from users where user_id = ?`
  const sql2 = `update users set ? where user_id = ?`
  db.query(sql, user_id, (err, result) => {
    if (err) return res.cc(err)
    if (result.length !== 1) return res.cc('用户不存在!')
    db.query(sql2, [userInfo, user_id], (err, result) => {
      if (err) {
        const arr = err.sqlMessage.split(' ')
        if (err.code === 'ER_DUP_ENTRY' && arr[arr.length -1] === "'nickname'") return res.cc('昵称重复,换一个叭!')
        return res.cc(err)
      }
      if (result.affectedRows !== 1) return res.cc('更新用户信息失败,请重试!')
      res.send({
        status: 0,
        msg: '修改成功'
      })
    })
  })
}
module.exports = {
  updatePwd,
  updateInfo
}
4. 测试接口:http://127.0.0.1:8086/my/updateInfo
  • 请求路径:/my/updateInfo
  • 请求方法:put
  • 请求头:Authorization: 登录token
  • 请求参数:
请求参数参数类型参数说明备注
user_idNumber用户id以query参数携带必填
nicknameString用户昵称非必填 非空 10位
user_picString用户头像非必填 允许为空
is_adminNumber是否管理员非必填 只能是0 或 1
is_useNumber账号是否可用非必填 只能是0 或 1
0
选择打赏方式:
微信

评论 (0)

取消