post像服务器发送数据:(id,name,alias)
定义路由和处理函数
路由模块:
//挂载具体路由5
//根据根据id更新文章分类数据的路由
Router.post('/updatecate',artcate_handler.updateCateById)
路由处理函数模块
// 根据id更新文章分类的处理函数
exports.updateCateById = (req, res) => {
res.send('ok')
}
验证表单数据
验证的规则
//名称必须是字符串、必填项
//别名必须是字符串、数字和字母的组成、必填项
const name = joi.string().required()
const alias=joi.string().alphanum().required()
//id必须是字符串、数字和字母的组成、必填项
const id = joi.number().integer().min(1).required()
//验证规则对象——根据id更新文章分类数据
//根据id更新文章分类数据规则
//id必须是字符串、数字和字母的组成、必填项
module.exports.update_cate_schema ={//向外共享
body:{//校验req.body中的数据
id, //这里的id与传入的参数需要一致
name,
alias,
}
}
joi,express-joi中间件
传入路由模块中
//2、导入需要验证的规则对象
const {update_cate_schema }=require('../schema/user')//存放是是规则_body里面的对象
//挂载具体路由5
//根据根据id更新文章分类数据的路由
Router.post('/updatecate',expressJoi(update_cate_schema ),artcate_handler.updateCateById)
查询分类名称(name)与分类别名(alias)是否被占用
首先如果根据id=3来查询数据,发现提交的name被其他类别占用,别名也会被其他占用——>所以需要做的首先是->查询id不为3的所有数据,然后从不为3的所以数据中查询name,alias有没有占用,只要其中一个被占用,说明就是数据被占用
判断名称和别名被占用的四种情况
// 根据id更新文章分类的处理函数
exports.updateCateById = (req, res) => {
const sqlStr=`select * from ev_article_cate where id!=? and (name=? or alias= ?)`
db.query(sqlStr,[req.body.id,req.body.name,req.body.alias],(err,results)=>{//无需要参数
//执行SQL语句失败
if(err) return res.cc(err)
//执行SQL语句成功
//判断名称和别名被占用的四种情况
if(results.length===2) res.cc('分类名称和别名都被占用,请更换后重试')
if(results.length===1 && results[0].name===req.body.name && results[0].alias===req.body.alias ) return res.cc('分类名称和别名都被占用,请更换后重试')
if(results.length===1 && results[0].name===req.body.name ) return res.cc('分类名称被占用,请更换后重试')
if(results.length===1 && results[0].alias===req.body.alias ) return res.cc('分类别名被占用,请更换后重试')
//名称和别名都可用,可用执行更新的操作
res.send('ok')
})
}
测试
实现更新文章分类的功能
路由处理函数
// 根据id更新文章分类的处理函数
exports.updateCateById = (req, res) => {
const sqlStr=`select * from ev_article_cate where id!=? and (name=? or alias= ?)`
db.query(sqlStr,[req.body.id,req.body.name,req.body.alias],(err,results)=>{//无需要参数
//执行SQL语句失败
if(err) return res.cc(err)
//执行SQL语句成功
//判断名称和别名被占用的四种情况
if(results.length===2) res.cc('分类名称和别名都被占用,请更换后重试')
if(results.length===1 && results[0].name===req.body.name && results[0].alias===req.body.alias ) return res.cc('分类名称和别名都被占用,请更换后重试')
if(results.length===1 && results[0].name===req.body.name ) return res.cc('分类名称被占用,请更换后重试')
if(results.length===1 && results[0].alias===req.body.alias ) return res.cc('分类别名被占用,请更换后重试')
//名称和别名都可用,可用执行更新的操作
const sqlStr1=`update ev_article_cate set ? where id = ?`
db.query(sqlStr1,[req.body,req.body.id],(err,results)=>{//无需要参数
//执行SQL语句失败
if(err) return res.cc(err)
//执行SQL语句成功
if(results.affectedRows!==1) res.cc('更新文章分类失败')
res.cc('更新文章分类成功',0)
})
})
}