内容
文章分类管理功能
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
完









