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

106 阅读2分钟

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

项目要求

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

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


个人中心

更新用户的基本信息

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

    // 更新用户的基本信息
    router.post('/userinfo', userinfo_handler.updateUserInfo)
    
  2. router_handler/userinfo.js 模块中,定义并向外共享 更新用户基本信息的路由处理函数

    // 更新用户基本信息的处理函数
    exports.updateUserInfo = (req, res) => {
        res.send('ok')
    }
    
验证表单数据
  1. schema/user.js 验证规则模块中,定义 idnicknameemail 的验证规则如下:

    // 定义 id、nickname、email 的验证规则
    const id = joi.number().integer().min(1).required()
    const nickname = joi.string().required()
    const email = joi.string().email().required()
    
  2. 并使用 exports 向外共享如下的验证规则对象

    // 验证规则对象 - 更新用户基本信息
    exports.update_userinfo_schema = {
        body: {
            id,
            nickname,
            email,
        },
    }
    
  3. /router/userinfo.js 模块中,导入验证数据合法性的中间件

    // 1、导入验证数据的中间件
    const expressJoi = require('@escook/express-joi')
    
  4. router/userinfo.js 模块中,导入需要的验证规则对象

    // 2. 导入需要的验证规则对象
    const { update_userinfo_schema } = require('../schema/user')
    
  5. router/userinfo.js 模块中,修改更改用户的基本信息的路由如下

    // 更新用户的基本信息
    router.post('/userinfo', expressJoi(update_userinfo_schema), userinfo_handler.updateUserInfo)
    
实现更新用户基本信息
  1. 定义待执行的 SQL 语句

    const sql = `update ev_users set ? where id=?`
    
  2. 调用 db.query() 执行 SQL 语句并传参

    db.query(sql, [req.body, req.body.id], (err, results) => {
        // 执行 SQL 语句失败
        if (err) return res.cc(err)
        // 执行 SQL 语句成功,但影响行数不为1
        if (results.affectedRows !== 1) return res.cc('修改用户基本信息失败')
        // 修改用户信息成功
        return res.cc('修改用户基本信息成功')
    })