4.4 根据 Id 删除文章分类
4.4.0 实现步骤
-
定义路由和处理函数
-
验证表单数据
-
实现删除文章分类的功能
4.4.1 定义路由和处理函数
-
在
/router/artcate.js
模块中,添加删除文章分类
的路由:
// 删除文章分类的路由
router.get('/deletecate/:id', artcate_handler.deleteCateById)
2.在 /router_handler/artcate.js
模块中,定义并向外共享 删除文章分类
的路由处理函数:
// 删除文章分类的处理函数
exports.deleteCateById = (req, res) => {
res.send('ok')
}
4.4.2 验证表单数据
-
在
/schema/artcate.js
验证规则模块中,定义 id 的验证规则如下:
// 定义 分类Id 的校验规则
const id = joi.number().integer().min(1).required()
2.并使用 exports
向外共享如下的 验证规则对象
:
// 校验规则对象 - 删除分类
exports.delete_cate_schema = {
params: {
id,
},
}
3.在/router/artcate.js
模块中,导入需要的验证规则对象,并在路由中使用:
// 导入删除分类的验证规则对象
const { delete_cate_schema } = require('../schema/artcate')
// 删除文章分类的路由
router.get('/deletecate/:id', expressJoi(delete_cate_schema), artcate_handler.deleteCateById)
4.4.3 实现删除文章分类的功能
-
定义删除文章分类的 SQL 语句:
const sql = `update ev_article_cate set is_delete=1 where id=?`
2.调用 db.query()
执行删除文章分类的 SQL 语句:
db.query(sql, req.params.id, (err, results) => {
// 执行 SQL 语句失败
if (err) return res.cc(err)
// SQL 语句执行成功,但是影响行数不等于 1
if (results.affectedRows !== 1) return res.cc('删除文章分类失败!')
// 删除文章分类成功
res.cc('删除文章分类成功!', 0)
})
4.5 根据 Id 获取文章分类数据
4.5.0 实现步骤
-
定义路由和处理函数
-
验证表单数据
-
实现获取文章分类的功能
4.5.1 定义路由和处理函数
-
在
/router/artcate.js
模块中,添加根据 Id 获取文章分类
的路由:router.get('/cates/:id', artcate_handler.getArticleById)
2.在
/router_handler/artcate.js
模块中,定义并向外共享根据 Id 获取文章分类
的路由处理函数:// 根据 Id 获取文章分类的处理函数 exports.getArticleById = (req, res) => { res.send('ok') }
4.5.2 验证表单数据
1.在 /schema/artcate.js
验证规则模块中,使用 exports
向外共享如下的 验证规则对象
:
// 校验规则对象 - 根据 Id 获取分类
exports.get_cate_schema = {
params: {
id,
},
}
2.在/router/artcate.js
模块中,导入需要的验证规则对象,并在路由中使用:
// 导入根据 Id 获取分类的验证规则对象const { get_cate_schema } = require('../schema/artcate')// 根据 Id 获取文章分类的路由router.get('/cates/:id', expressJoi(get_cate_schema), artcate_handler.getArticleById)
4.5.3 实现获取文章分类的功能
-
定义根据 Id 获取文章分类的 SQL 语句:
const sql = `select * from ev_article_cate where id=?`
2.调用
db.query()
执行 SQL 语句:
db.query(sql, req.params.id, (err, results) => {
// 执行 SQL 语句失败
if (err) return res.cc(err)
// SQL 语句执行成功,但是没有查询到任何数据
if (results.length !== 1) return res.cc('获取文章分类数据失败!')
// 把数据响应给客户端
res.send({
status: 0,
message: '获取文章分类数据成功!',
data: results[0],
})
})
4.6 根据 Id 更新文章分类数据
4.6.0 实现步骤
-
定义路由和处理函数
-
验证表单数据
-
查询
分类名称
与分类别名
是否被占用 -
实现更新文章分类的功能
4.6.1 定义路由和处理函数
-
在
/router/artcate.js
模块中,添加更新文章分类
的路由:// 更新文章分类的路由 router.post('/updatecate', artcate_handler.updateCateById)
2.在
/router_handler/artcate.js
模块中,定义并向外共享更新文章分类
的路由处理函数:// 更新文章分类的处理函数 exports.updateCateById = (req, res) => { res.send('ok') }
4.6.2 验证表单数据
1.在 /schema/artcate.js
验证规则模块中,使用 exports
向外共享如下的 验证规则对象
:
// 校验规则对象 - 更新分类
exports.update_cate_schema = {
body: {
Id: id,
name,
alias,
},
}
2.在/router/artcate.js
模块中,导入需要的验证规则对象,并在路由中使用:
// 导入更新文章分类的验证规则对象
const { update_cate_schema } = require('../schema/artcate')
// 更新文章分类的路由
router.post('/updatecate', expressJoi(update_cate_schema), artcate_handler.updateCateById)
4.5.4 查询分类名称与别名是否被占用
-
定义查重的 SQL 语句:
// 定义查询 分类名称 与 分类别名 是否被占用的 SQL 语句 const sql = `select * from ev_article_cate where Id<>? and (name=? or alias=?)`
2.调用
db.query()
执行查重的操作:// 执行查重操作 db.query(sql, [req.body.Id, req.body.name, req.body.alias], (err, results) => { // 执行 SQL 语句失败 if (err) return res.cc(err) // 判断 分类名称 和 分类别名 是否被占用 if (results.length === 2) 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('分类别名被占用,请更换后重试!') // TODO:更新文章分类 })
4.5.5 实现更新文章分类的功能
1.定义更新文章分类的 SQL 语句:
const sql = `update ev_article_cate 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('更新文章分类失败!')
// 更新文章分类成功
res.cc('更新文章分类成功!')
})