内容
文章分类管理功能
1. 新建article表
文章分类表:
在表中新增两条数据
2. 获取文章分类列表
1.初始化路由模块,初始化路由处理函数模块
在router
目录下新建article.js
路由模块
在router_handler
目录下新建article.js
路由处理函数模块
初始化代码如下:
在app.js
中还要导入并使用路由模块:
注意这个地方的前缀定的是/my/article
2.定义sql语句,在数据库中查找文章的列表
测试:
3. 新增文章分类
1.定义相关的路由和路由处理函数模块
2.验证表单数据
请求这个接口需要在请求体中带上两个参数,那么这两个参数的合法性需要在服务端进行校验
在schema
中新建article.js
验证规则模块,定义name
、alias
的验证规则,并向外共享这个验证规则对象:
在/router/article.js
路由模块中导入验证数据合法性的中间件
和验证规则对象
,在新增文章分类
的路由中声明中间件,对当前请求的数据进行验证
3.查询分类名称和分类别名是否被占用
测试:
4.定义sql语句,在数据库中更新文章的分类列表
测试:
4. 根据id删除文章分类
1.定义相关的路由和路由处理函数模块
2.验证表单数据
请求这个接口需要在url中带上id
参数,那么id参数的合法性需要在服务端进行校验
⚠️这里不是body
了,是params
,这个参数是url参数,不是请求体参数
3.定义sql语句,在数据库中更新文章的分类列表
⚠️:这里删除并不是真的删除数据库中的数据,只是将数据库中的isDelete
值改为1
测试:
5. 根据id获取文章分类
1.定义相关的路由和路由处理函数模块
2.验证表单数据
(这个跟前面删除文章分类的验证规则对象是一模一样的哈)
3.定义sql语句,在数据库中查询对应的文章分类
6. 根据id更新文章分类
1.定义相关的路由和路由处理函数模块
2.验证表单数据
这三个参数的验证规则已经是现成的咯,前面写过的,直接导出对象就行啦
3.查询分类名称和分类别名是否被占用
这里主要是在筛查本次请求提交的id
以外的其他数据的name
和alias
是否重复,比如想更新的文章分类id=3,那就会查id!=3的其他数据和当前想要更新的数据是否有重复的name
和alias
,id=3的文章的name
和alias
跟当前想要更新的值相同是被允许的
4.定义sql语句,在数据库中更新文章的分类列表
测试:
文章管理功能
1. 新建article_detail表
文章表:
2. 发布新文章
1.初始化路由模块,初始化路由处理函数模块
在router
目录下新建articleDetail.js
路由模块
在router_handler
目录下新建articleDetail.js
路由处理函数模块
初始化代码如下:
在app.js
中导入并使用:
2.使用multer解析表单数据
⚠️:使用express.urlencoded()
中间件无法解析multipart/form-data
格式的请求体数据
当前项目,推荐使用multer
来解析multipart/form-data
格式的表单数据
安装multer
:
npm i multer
在router/articleDetail.js
模块中导入并配置multer
:
multer
会将文本
类型的数据解析并挂载到 req.body
上,文件
类型的数据解析并挂载到 req.file
上
3.验证表单数据
在schema
中新建articleDetail.js
验证规则模块,定义以下参数的验证规则
先使用multer
解析表单数据,再使用 expressJoi
对解析的表单数据进行验证
在 router_handler/article.js
模块中的处理函数中,判断用户是否提交了 coverImg
4.在数据库中更新文章
在 app.js
中,使用 express.static()
中间件,将 uploads
目录中的图片托管为静态资源:
重复的地方很多,大部分就在复制粘贴了,但是对于form-data类型数据的处理感觉自己还是懵懵的,有空再细学一下八
multer文档:
https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md
完