nodejs--开发自己的项目——6.5--文章分类管理-根据id更新文章分类数据——post路由-url/my/article/updatecate/:id---update

post像服务器发送数据:(id,name,alias)

定义路由和处理函数

路由模块:


//挂载具体路由5
//根据根据id更新文章分类数据的路由
Router.post('/updatecate',artcate_handler.updateCateById)

路由处理函数模块

// 根据id更新文章分类的处理函数
exports.updateCateById = (req, res) => {
  res.send('ok')
}

 

验证表单数据

验证的规则

//名称必须是字符串、必填项
//别名必须是字符串、数字和字母的组成、必填项
const name  = joi.string().required()
const alias=joi.string().alphanum().required()
//id必须是字符串、数字和字母的组成、必填项
const id  = joi.number().integer().min(1).required()
//验证规则对象——根据id更新文章分类数据
//根据id更新文章分类数据规则
//id必须是字符串、数字和字母的组成、必填项
module.exports.update_cate_schema  ={//向外共享
    body:{//校验req.body中的数据
        id, //这里的id与传入的参数需要一致
        name,
        alias,
    }

}

 joi,express-joi中间件

传入路由模块中

//2、导入需要验证的规则对象
const {update_cate_schema   }=require('../schema/user')//存放是是规则_body里面的对象
//挂载具体路由5
//根据根据id更新文章分类数据的路由
Router.post('/updatecate',expressJoi(update_cate_schema ),artcate_handler.updateCateById)

 

  

查询分类名称(name)与分类别名(alias)是否被占用

首先如果根据id=3来查询数据,发现提交的name被其他类别占用,别名也会被其他占用——>所以需要做的首先是->查询id不为3的所有数据,然后从不为3的所以数据中查询name,alias有没有占用,只要其中一个被占用,说明就是数据被占用

判断名称和别名被占用的四种情况

// 根据id更新文章分类的处理函数
exports.updateCateById = (req, res) => {
    const sqlStr=`select * from ev_article_cate where id!=? and (name=? or alias= ?)`
    db.query(sqlStr,[req.body.id,req.body.name,req.body.alias],(err,results)=>{//无需要参数
      //执行SQL语句失败
      if(err) return  res.cc(err)
      //执行SQL语句成功
      //判断名称和别名被占用的四种情况
      if(results.length===2) res.cc('分类名称和别名都被占用,请更换后重试')
      if(results.length===1 && results[0].name===req.body.name && results[0].alias===req.body.alias ) return res.cc('分类名称和别名都被占用,请更换后重试')
      if(results.length===1 && results[0].name===req.body.name ) return res.cc('分类名称被占用,请更换后重试')
      if(results.length===1 && results[0].alias===req.body.alias )  return res.cc('分类别名被占用,请更换后重试')
      //名称和别名都可用,可用执行更新的操作
      res.send('ok')
    
  })
}

测试 

 

 

 

实现更新文章分类的功能

 路由处理函数

// 根据id更新文章分类的处理函数
exports.updateCateById = (req, res) => {
    const sqlStr=`select * from ev_article_cate where id!=? and (name=? or alias= ?)`
    db.query(sqlStr,[req.body.id,req.body.name,req.body.alias],(err,results)=>{//无需要参数
      //执行SQL语句失败
      if(err) return  res.cc(err)
      //执行SQL语句成功
      //判断名称和别名被占用的四种情况
      if(results.length===2) res.cc('分类名称和别名都被占用,请更换后重试')
      if(results.length===1 && results[0].name===req.body.name && results[0].alias===req.body.alias ) return res.cc('分类名称和别名都被占用,请更换后重试')
      if(results.length===1 && results[0].name===req.body.name ) return res.cc('分类名称被占用,请更换后重试')
      if(results.length===1 && results[0].alias===req.body.alias )  return res.cc('分类别名被占用,请更换后重试')
      //名称和别名都可用,可用执行更新的操作
      const sqlStr1=`update ev_article_cate set ? where id = ?`
      db.query(sqlStr1,[req.body,req.body.id],(err,results)=>{//无需要参数
          //执行SQL语句失败
          if(err) return  res.cc(err)
          //执行SQL语句成功
          if(results.affectedRows!==1) res.cc('更新文章分类失败')
          res.cc('更新文章分类成功',0)
      
    })
    
  })
}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值