导入与导出

1.前言

  • 实际使用过程中,CRUD页面需要进行批量信息录入,所以需要一个excel导入的功能
  • 可将导入和导出功能进行关联,导出的文件刚好作为导入的模板使用,减少维护量
  • 权限管理:需要给导入操作绑定一个权限,前端用来展示隐藏按钮,后端用来进行接口权限验证
  • 前端分解:导入 -> 解析 -> 表格展示 -> 确认提交
  • 后端:新增导入接口,接收数组数据,进行批量新增,要做好重复验证

2.权限

  • 新建CRUD模块菜单时,在自动生成权限环节,需要添加导入权限配置
  • 已经存在的菜单可单独配置导入权限

3.前端

  • 文件选择功能,按钮根据权限进行展示
  • 利用文件域,选择excel文件并解析成JSON数据
  • 封装展示组件,以弹窗形式进行表格展示,做好前端分页,表头固定
  • 风险告知:页面红字展示数据有覆盖风险
  • 表格提交:将事件推送至主页面,在主页面中进行提交

4.后端

  • 接收前端的参数,做好数据过滤(白名单字段,特殊值类型转换,例如status的值由字符串转换成数字)
  • 对于重复数据,让数据库引擎自动处理,不需要手动编写过滤代码
  • 在 MySQL 下,Sequelize 不支持直接跳过重复数据,重复数据只能做更新处理
//忽略冲突行
{ ignoreDuplicates: true }(MySQL 8.0+)

//更新已有记录
{ updateOnDuplicate: ['field1', ...] }
  • 数据校验失败,例如空值,结果只有一种,就是报错,无法通过配置的形式跳过,只能提前过滤出有误的数据
//手写非空判断逻辑
if(name == ''){}
//使用模型进行判断(推荐)
  • 因数据量庞大,后端不提供准确的操作结果(新增条数,更新条数)
posted @ 2025-06-10 17:04  ---空白---  阅读(10)  评论(0)    收藏  举报