Node.js - 项目实践之个人中心(七)

273 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

项目要求

通过一个小项目实践 Node.js 各个知识点。麻雀虽小,五脏俱全,这个项目会从 0~1,逐步完成所有需求。该项目实现接口有注册、登录、获取用户信息等等

截屏2022-05-28 下午11.35.33.png


个人中心

更换头像

实现步骤
  • 定义路由和处理函数
  • 验证表单数据
  • 实现更新用户头像功能
定义路由和处理函数
  1. /router/userinfo.js 模块中,新增更新用户头像的路由

    //更新用户头像的路由
    router.post('/update/avatar',userinfo_handler.updateAvatar)
    
  2. /router_handler/userinfo.js 模块中,定义并向外共享更新用户头像的路由处理函数

    // 更新用户头像的处理函数
    exports.updateAvatar = (req, res) => {
        res.cc('ok')
    }
    
验证表单数据
  1. schema/user.js 验证规则模块中,定义 avatar 的验证规则如下

    // dataUri() 指的是如下格式的字符串数据
    const userinfo_avatar = joi.string().dataUri().required()
    
  2. 并使用 exports 向外共享如下的验证规则对象

    // 验证规则对象 - 更换头像
    
    exports.update_avatar_schema = {
        body: {
            avatar: userinfo_avatar
        },
    }
    
  3. /router/userinfo.js 模块中,导入需要的验证规则对象

    导入需要的验证规则对象
    const { update_userinfo_schema, update_password_schema, update_avatar_schema } = require('../schema/user')
    
  4. router/userinfo.js 模块中,修改更新用户头像的路由如下

    //更新用户头像的路由
    router.post('/update/avatar',expressJoi(update_avatar_schema),userinfo_handler.updateAvatar)
    
实现更新用户头像功能
  1. 定义更新用户头像的SQL语句

    const sql = 'update ev_users set user_pic=? where id=?'
    
  2. 调用 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)
    })
    
    

完整代码

代码下载点击这里