持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情
项目要求
通过一个小项目实践 Node.js 各个知识点。麻雀虽小,五脏俱全,这个项目会从 0~1,逐步完成所有需求。该项目实现接口有注册、登录、获取用户信息等等
个人中心
更换头像
实现步骤
- 定义路由和处理函数
- 验证表单数据
- 实现更新用户头像功能
定义路由和处理函数
-
在
/router/userinfo.js模块中,新增更新用户头像的路由//更新用户头像的路由 router.post('/update/avatar',userinfo_handler.updateAvatar) -
在
/router_handler/userinfo.js模块中,定义并向外共享更新用户头像的路由处理函数// 更新用户头像的处理函数 exports.updateAvatar = (req, res) => { res.cc('ok') }
验证表单数据
-
在
schema/user.js验证规则模块中,定义avatar的验证规则如下// dataUri() 指的是如下格式的字符串数据 const userinfo_avatar = joi.string().dataUri().required() -
并使用
exports向外共享如下的验证规则对象// 验证规则对象 - 更换头像 exports.update_avatar_schema = { body: { avatar: userinfo_avatar }, } -
在
/router/userinfo.js模块中,导入需要的验证规则对象导入需要的验证规则对象 const { update_userinfo_schema, update_password_schema, update_avatar_schema } = require('../schema/user') -
在
router/userinfo.js模块中,修改更新用户头像的路由如下//更新用户头像的路由 router.post('/update/avatar',expressJoi(update_avatar_schema),userinfo_handler.updateAvatar)
实现更新用户头像功能
-
定义更新用户头像的SQL语句
const sql = 'update ev_users set user_pic=? where id=?' -
调用
db.query()执行 SQL 语句,更新对应用户的头像db.query(sql,[req.body.avatar, req.auth.id], (err, results) => { // 执行 SQL 语句失败 if (err) return res.cc(err) // SQL语句执行成功,但是影响行数不等于 1 if (results.affectedRows !== 1) return res.cc('更新头像失败') // 更新用户头像成功 res.cc('更新用户头像成功', 0) })