nodejs--开发自己的项目——6.2--文章分类管理-新增文章分类列表数据——post路由-url/my/article/addcates

定义路由和处理函数

 这是路由模块

//这是文章分类模块-的路由
//导入express模块
const express=require('express')

//创建路由对象
const Router=express.Router()
//导入处理函数的模块
const artcate_handler=require('../router_handler/artcate')


//挂载具体路由1
//获取文章分类列表数据的路由
Router.get('/cates',artcate_handler.getArticleCates)

//挂载具体路由2
//新增文章分类列表的数据的路由
Router.post('/addcates',artcate_handler.addArticleCates)
//向外导出路由
module.exports=Router//之前={对象 对象里面是属性 可以做一个省略}

路由处理函数模块:

// 新增文章分类列表数据的处理函数
exports.addArticleCates = (req, res) => {
    res.send('ok')
 
 
}

 

验证表单数据——进行数据合法性的验证-(joi-规则-字符串类型-必填项-alphanum只包含字母和数字)--规则-

规则的对象

//表单数据验证的包
const joi=require('joi')
//定义验证规则——查看对应文档

//验证规则对象——新增文章分类
//新增文章分类的验证规则-
//名称必须是字符串、必填项
//别名必须是字符串、数字和字母的组成、必填项
const name  = joi.string().required()
const alias=joi.string().alphanum().required()
module.exports.add_cate_schema  ={//向外共享
    body:{//校验req.body中的数据
        name,
        alias,      
    }

}

导入验证表单数据的中间件var expressJoi = require('@escook/express-joi')

//1、导入验证表单数据的中间件
var expressJoi = require('@escook/express-joi')
//2、导入需要验证的规则对象
const {add_cate_schema}=require('../schema/user')//存放是是规则_body里面的对象
//挂载具体路由2
//新增文章分类列表的数据的路由
Router.post('/addcates',expressJoi(add_cate_schema),artcate_handler.addArticleCates)

 有提示说明name是必填项

 //别名必须是字符串、数字和字母的组成、必填项

 

 

查询分类名称(name)与 分类别名(alias)是否被占用(SQL语句-都被占用-只占用其中的一个-查询数据--使用查询的长度进行判断-只要其中一个满足就是配占用-所以需要进行--退出)

 创建数据表的时候有设置数据表中的name和alias具有唯一性,所以在插入相关数据的时候也需要对填入的数据是否与表中数据重复进行相关判断,提示不合法

路由处理函数


// 新增文章分类列表数据的处理函数
exports.addArticleCates = (req, res) => {
    //定义查询分类列表的SQL语句
    const sqlStr=`select * from ev_article_cate where name = ?  or alias = ?`//根据id是从小到大的排序-升序
    const newdata=req.body
    db.query(sqlStr,[newdata.name,newdata.alias],(err,results)=>{//无需要参数
        //执行SQL语句失败
        if(err) return  res.cc(err)
        //执行SQL语句成
        //这里存在先后关系
        if (results.length === 2) //输入的名称和别名都存在在数据库中-且不相同
            return res.cc('分类名称与别名被占用,请更换后重试!')
        //只查到一条数据,且该数据的内容是是一条数据都被占用
        if (results.length === 1 && results[0].name === newdata.name && results[0].alias === newdata.alias) 
            return res.cc('分类名称与别名被占用,请更换后重试!')
        // 分类名称 或 分类别名 被占用
        if (results.length === 1 && results[0].name === newdata.name) 
            return res.cc('分类名称被占用,请更换后重试!')
        if (results.length === 1 && results[0].alias === newdata.alias) 
            return res.cc('分类别名被占用,请更换后重试!')
        //分类名称和分类别名都可用,执行添加的操作
        res.cc('可以去实现新增文章的分类')
        
    })
 
 
}

 

 

 

 

实现新增文章分类的功能(插入数据-SQL语句-insert-传递对象-将对象的数据会添加到表里面)

// 新增文章分类列表数据的处理函数
exports.addArticleCates = (req, res) => {
    //定义查询分类列表的SQL语句
    const sqlStr=`select * from ev_article_cate where name = ?  or alias = ?`//根据id是从小到大的排序-升序
    const newdata=req.body
    db.query(sqlStr,[newdata.name,newdata.alias],(err,results)=>{//无需要参数
        //执行SQL语句失败
        if(err) return  res.cc(err)
        //执行SQL语句成
        //这里存在先后关系
        if (results.length === 2) //输入的名称和别名都存在在数据库中-且不相同
            return res.cc('分类名称与别名被占用,请更换后重试!')
        //只查到一条数据,且该数据的内容是是一条数据都被占用
        if (results.length === 1 && results[0].name === newdata.name && results[0].alias === newdata.alias) 
            return res.cc('分类名称与别名被占用,请更换后重试!')
        // 分类名称 或 分类别名 被占用
        if (results.length === 1 && results[0].name === newdata.name) 
            return res.cc('分类名称被占用,请更换后重试!')
        if (results.length === 1 && results[0].alias === newdata.alias) 
            return res.cc('分类别名被占用,请更换后重试!')
        //分类名称和分类别名都可用,执行添加的操作
        const sqlStr1 = `insert into ev_article_cate set ?`
        db.query(sqlStr1, newdata, (err, results) => {
          // SQL 语句执行失败
          if (err) return res.cc(err)
          // SQL 语句执行成功,但是影响行数不等于 1
          if (results.affectedRows !== 1) return res.cc('新增文章分类失败!')
          // 新增文章分类成功
          res.cc('新增文章分类成功!', 0)
        })

        
    })
 
 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值