持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情
项目要求
通过一个小项目实践 Node.js 各个知识点。麻雀虽小,五脏俱全,这个项目会从 0~1,逐步完成所有需求。该项目实现接口有注册、登录、获取用户信息等等
个人中心
更新用户的基本信息
实现步骤
- 定义路由和处理函数
- 验证表单数据
- 实现更新用户基本信息
定义路由和处理函数
-
在
/router/userinfo.js模块中,新增更新用户基本信息的路由// 更新用户的基本信息 router.post('/userinfo', userinfo_handler.updateUserInfo) -
在
router_handler/userinfo.js模块中,定义并向外共享 更新用户基本信息的路由处理函数// 更新用户基本信息的处理函数 exports.updateUserInfo = (req, res) => { res.send('ok') }
验证表单数据
-
在
schema/user.js验证规则模块中,定义id、nickname、email的验证规则如下:// 定义 id、nickname、email 的验证规则 const id = joi.number().integer().min(1).required() const nickname = joi.string().required() const email = joi.string().email().required() -
并使用
exports向外共享如下的验证规则对象// 验证规则对象 - 更新用户基本信息 exports.update_userinfo_schema = { body: { id, nickname, email, }, } -
在
/router/userinfo.js模块中,导入验证数据合法性的中间件// 1、导入验证数据的中间件 const expressJoi = require('@escook/express-joi') -
在
router/userinfo.js模块中,导入需要的验证规则对象// 2. 导入需要的验证规则对象 const { update_userinfo_schema } = require('../schema/user') -
在
router/userinfo.js模块中,修改更改用户的基本信息的路由如下// 更新用户的基本信息 router.post('/userinfo', expressJoi(update_userinfo_schema), userinfo_handler.updateUserInfo)
实现更新用户基本信息
-
定义待执行的 SQL 语句
const sql = `update ev_users set ? where id=?` -
调用
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('修改用户基本信息成功') })