目录
前言
定义路由和处理函数
验证表单数据
实现更新用户基本信息的功能
继前面几篇文章,本文介绍如何编写更新用户信息接口
路由
// 更新用户信息接口
router.post('/userinfo', userinfo_handler.updateUserinfo)
处理函数
// 导出更新用户信息处理函数
exports.updateUserinfo = (req,res)=>{
res.send('更新成功')
}
使用postman模拟发起post请求
定义id,nickname,email验证规则
// 定义 id, nickname, emial 的验证规则
const id = joi.number().integer().min(1).required()
const nickname = joi.string().required()
const email = joi.string().email().required()
向外导出更新的用户信息
// 验证规则对象 - 更新用户基本信息
exports.update_userinfo_schema = {
body: {
id,
nickname,
email,
},
}
导入验证数据合法性的中间件
// 导入验证数据合法性的中间件
const expressJoi = require('@escook/express-joi')
导入需要验证的对象
// 导入需要的验证规则对象
const { update_userinfo_schema } = require('../schema/user')
在更新用户信息的接口中,添加验证
// 更新用户信息接口
router.post('/userinfo',expressJoi(update_userinfo_schema), userinfo_handler.updateUserinfo)
使用postman模拟请求验证
定义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.send({status:1,message:err.message})
// 判断影响行数是否为1
if(results.affectedRows!==1) return res.send({status:1,message:'用户信息更新失败'})
res.send({
status:0,
message:'用户更新成功'
})
})
更新用户完整处理函数
// 导出更新用户信息处理函数
exports.updateUserinfo = (req,res)=>{
const sql = 'update ev_users set ? where id=?'
db.query(sql,[req.body,req.body.id],(err,results)=>{
// 判断sql语句是否执行成功
if(err) return res.send({status:1,message:err.message})
// 判断影响行数是否为1
if(results.affectedRows!==1) return res.send({status:1,message:'用户信息更新失败'})
res.send({
status:0,
message:'用户更新成功'
})
})
}
使用postman模拟请求
从数据库中查看
修改成功
当修改不存在用户时
返回修改失败