Loading......
接上篇文章,在完成了用户(user)、用户关系(follow)后,我们开始实现标签(tag)的创建及获取;
老规矩上思路:
标签创建:
- 创建标签
- 标签存储
- 标签验证
- 返回数据
由于这里实现标签创建及获取标签思路比较简单,所有就放在一起书写了;
获取标签:
- 利用模型查看所有标签
- 标签处理
- 响应数据
实现过程:
首先在 controller 和 routes 中分别创建文件 tags.js 并书写(具体内容在文章底部详细代码区域);
在 init 中的 initRoute.js 把访问路径引入;
在工具文件 utils 下的 validate 中创建 tag_validate.js 用来存放标签创建的验证;
验证:
在终端启动服务后用 postman 验证如下:
先用 post 创建几个标签
之后用 get 请求获取数据库中存储的所有标签;
这样,我们就将标签的创建及获取完成了。
详细代码:
controller / tags.js
const HttpException = require("../exceptions/http_expetion");
const { validateCreateTag } = require("../utils/validate/tag_validate");
const Tag = require("../models/tag");
//创建标签
module.exports.createTag = async (req, res, next) => {
try {
//创建标签
let tag = req.body.tag
//标签验证
let { error, validate } = validateCreateTag(tag);
if (!validate) {
throw new HttpException(422, "标签不能为空!!!", error);
}
//标签存储
const tagResult = await Tag.create({ name: tag })
// 返回数据
res.status(201).json({
status: 1,
message: "创建标签成功",
data: tagResult.dataValues.name
});
} catch (err) {
next(err);
}
};
//获取标签
module.exports.getTags = async (req, res, next) => {
try {
//利用模型查询所有标签
const tagsAll = await Tag.findAll()
//标签处理
const tags = []
if (tagsAll.length > 0) {
for (const index of tagsAll) {
tags.push(index.dataValues.name)
}
}
//响应数据
res.status(201).json({
status: 1,
message: "获取标签成功",
data: tags
});
} catch (err) {
next(err);
}
};
routes / tags.js
const express = require("express");
const router = express.Router()
const {authMiddleware} = require('../middleware/admin/auth_middleware')
const TagController = require('../controller/tags')
router.get('/',TagController.getTags)
router.post('/',authMiddleware,TagController.createTag)
module.exports = router
init / initRoute.js
const userRoute = require('../routes/users')
const followRoute = require('../routes/follow')
const tagRoute = require('../routes/tags')
const initRoute = (app)=>{
app.use('/api/v1/users',userRoute)
app.use('/api/v1/follow',followRoute)
app.use('/api/v1/tags',tagRoute)
}
module.exports = initRoute
utils / validate / tag_validate.js
const validator = require('validator')
//标签创建验证
module .exports.validateCreateTag = (name)=>{
let err = {}
if(validator.isEmpty(name)){
err.name = '标签不能为空 !!!'
}
let validate = Object.keys(err).length < 1
return {err,validate}
}
未完待续......