后台项目 Express-Mysql-Vue3-TS-Pinia 角色更新api

196 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第22天,点击查看活动详情

角色更新api

引言

通过之前一段时间 ExpressMysql 的学习

这里尝试来搭建一个 后台系统 来巩固下学习的技术。

角色更新api

在上一节,我们将 角色菜单 的联动讲述清楚后

下面我们可以进行 角色更新 操作

当然最主要的还是 角色menuArrId 字段的处理,需要 后端 接收到数据时,来进行一定程度的转换操作

api接口

首先我们通过 Express 来将后端的 角色更新 接口 以及相关的 sql 语句,给定义和写好

  • 更新

    • sql

      更新的 sql 语句,还是很容易就写出来的,就是根据 id 来找到具体的 角色,之后更新数据

      文件位置:controller\sys\sql.js 文件

      const editRole = `update role set name=?,description=?,menuArrId=? where id=?;`
      
    • 逻辑

      由于 更新 操作,且根据 RESTFUL 的一个接口规范,我们的请求是 PUT 请求,所以我们后端再拿数据时,需要到放在请求体 req.body 中的数据拿出来。

      由于我们的 menuArrId 字段是 string 类型,但是 前端 要做到无感状态,所以传递过来的值是 array 类型

      所以我们在后端 进行 数据库保存的时候,需要进行 JSON.stringify 的方式来进行转换

      文件位置:controller\sys\index.js 文件

      const editRole = (req, res, next) => {
        try {
          const { id, name, description, menuArrId } = req.body
      
          const sql = sqlAll.editRole
          const menuListString = JSON.stringify(menuArrId)
          const sqlArr = [name, description, menuListString, id]
      
          const callback = (error, results) => {
            if (error) {
              console.log('连接出错', error)
              return
            }
      
            const code = 200
            const data = {
              message: '修改成功!'
            }
            useResSend(res, code, data)
          }
      
          sqlConnect(sql, sqlArr, callback)
        } catch (err) {
          next(err)
        }
      }
      
  • 接口

    逻辑 已经处理完成,我们这里将后端 角色更新API 接口 进行定义

    文件位置:router\sys\index.js

    接口api路径:api/sys/edit-role

    const Api = {
      editRole: '/edit-role',
    }
    
    router.put(Api.editRole, sysController.editRole)
    

总结

通过 Express-Mysql-Vue3-TS-Pinia 做出一个 后台系统 项目

完成了 角色更新 api 接口的开发