🍳作者: 贤蛋大眼萌,一名很普通但不想普通的程序媛 \color{#FF0000}{贤蛋 大眼萌 ,一名很普通但不想普通的程序媛} 贤蛋大眼萌,一名很普通但不想普通的程序媛🤳
🙊语录: 多一些不为什么的坚持 \color{#0000FF}{多一些不为什么的坚持} 多一些不为什么的坚持
📝本文章收录于专栏:Node.js+koa–后端管理系统
💭 眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂 o f f e r ,程序员的必备刷题平台 − − 牛客网 \color{#ff7f50}{眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂offer,程序员的必备刷题平台--牛客网} 眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂offer,程序员的必备刷题平台−−牛客网
设计标签创建、查询、接口 | 标签绑定到动态上
🧢 标签接口设计思路
思路:一个动态可以有多个标签,一个标签也可以对应多个动态
🌽 创建标签接口
① 创建标签表
CREATE TABLE IF NOT EXISTS `label`(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(10) NOT NULL UNIQUE,
createAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updateAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
② 定义路由接口–>验证用户登录
const Router = require ('koa-router')
const {
create,
} = require('../controller/label_contrller')
const {
verifyAuth
} = require('../middleware/auth_middleware')
const labelRouter = new Router ({prefix: '/label'})
// 创建标签
labelRouter.post('/',verifyAuth,create)
module.exports = labelRouter
③ Controller和Service中处理内容
🥕 标签与动态关系
① 创建标签和动态关系表
CREATE TABLE IF NOT EXISTS `moment_label`(
moment_id INT NOT NULL,
label_id INT NOT NULL,
createAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updateAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(moment_id, label_id),
FOREIGN KEY (moment_id) REFERENCES moment(id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (label_id) REFERENCES label(id) ON DELETE CASCADE ON UPDATE CASCADE
);
② 给动态添加标签接口
1. 给动态添加新标签的接口
ps: 补充完整的动态路由代码
const Router = require('koa-router') const { create, detail, list, update, remove, addLabels, fileInfo } = require('../controller/moment_controller') const { verifyAuth, verifyPermission } = require('../middleware/auth_middleware') const { verifyLabelExists } = require('../middleware/label_middleware') const momentRouter = new Router({prefix: '/moment'}) // 创建动态 momentRouter.post('/',verifyAuth,create) // 获取动态信息 momentRouter.get('/',list) momentRouter.get('/:momentId',detail) // 修改动态接口 // 条件:1.用户必须登录 2. 用户具备权限 momentRouter.patch('/:momentId',verifyAuth,verifyPermission,update) momentRouter.delete('/:momentId',verifyAuth,verifyPermission,remove) // 给动态添加标签 momentRouter.post('/:momentId/labels', verifyAuth, verifyPermission, verifyLabelExists, addLabels); // 动态配图 momentRouter.get('/images/:filename',fileInfo) module.exports = momentRouter
2. 给动态内容绑定标签
🍤 查询标签接口
① 路由接口
② 查询动态列表,展示标签数量
③查询动态详情,展示标签列表
PS:
求知无坦途,学问无捷径。👣 一步一个脚印,你走过的路,每一步都算数。 \color{#ff7f50}{一步一个脚印,你走过的路,每一步都算数。} 一步一个脚印,你走过的路,每一步都算数。 每一次进步都是对自己努力的肯定。如果读了文章有收获,不如一起来学习,一起进步吧。传送门🚪刷题神器
本文含有隐藏内容,请 开通VIP 后查看