IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> react 项目--博客系统 ( 20 ) -> 正文阅读

[JavaScript知识库]react 项目--博客系统 ( 20 )

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}
}

未完待续......

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 20:40:43  更:2022-03-21 20:43:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:23:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码