实现用户基本信息修改功能
允许修改 昵称(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_id | Number | 用户id | 以query参数携带必填 |
nickname | String | 用户昵称 | 非必填 非空 10位 |
user_pic | String | 用户头像 | 非必填 允许为空 |
is_admin | Number | 是否管理员 | 非必填 只能是0 或 1 |
is_use | Number | 账号是否可用 | 非必填 只能是0 或 1 |
评论 (0)