【Node.js+koa--后端管理系统】设计标签创建、查询、接口 | 标签绑定到动态

发布于:2022-12-11 ⋅ 阅读:(824) ⋅ 点赞:(0)

🍳作者: 贤蛋大眼萌,一名很普通但不想普通的程序媛 \color{#FF0000}{贤蛋 大眼萌 ,一名很普通但不想普通的程序媛} 贤蛋大眼萌,一名很普通但不想普通的程序媛🤳

🙊语录: 多一些不为什么的坚持 \color{#0000FF}{多一些不为什么的坚持} 多一些不为什么的坚持

📝本文章收录于专栏:Node.js+koa–后端管理系统

💭 眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂 o f f e r ,程序员的必备刷题平台 − − 牛客网 \color{#ff7f50}{眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂offer,程序员的必备刷题平台--牛客网} 眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂offer,程序员的必备刷题平台牛客网

👉🏻点击跳转刷题网免费注册学习

🧢 标签接口设计思路

思路:一个动态可以有多个标签,一个标签也可以对应多个动态

image-20220920220430109

🌽 创建标签接口

① 创建标签表

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中处理内容

image-20220531113318577

image-20220531113357014

🥕 标签与动态关系

① 创建标签和动态关系表

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. 给动态添加新标签的接口

image-20220531203054692

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
 

image-20220531203312040

image-20220531203326884

2. 给动态内容绑定标签

image-20220601114143667

image-20220601114157401

🍤 查询标签接口

① 路由接口

image-20220920233302498

② 查询动态列表,展示标签数量

image-20220601120945285

③查询动态详情,展示标签列表

image-20220602145357098

PS:

求知无坦途,学问无捷径。👣 一步一个脚印,你走过的路,每一步都算数。 \color{#ff7f50}{一步一个脚印,你走过的路,每一步都算数。} 一步一个脚印,你走过的路,每一步都算数。 每一次进步都是对自己努力的肯定。如果读了文章有收获,不如一起来学习,一起进步吧。传送门🚪刷题神器

image-20220917104224568


在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到