“暂存”校验逻辑探讨

1、背景

在业务中可能会遇到这种场景,前端页面元素多且复杂,一次性填完提交耗时很长,中间中断面临着丢失数据的风险。针对这个问题,"暂存"应运而生。

那"暂存"的时候,是否需要对数据校验,如何进行校验,就是本文探讨的内容。

2、前后端职责简介

探讨之前,先简单聊聊前后端的职责。

2.1 前端

负责数据的输入,并对输入的内容进行校验,保证数据正确性、完整性。

常见的校验逻辑有以下几种:

  • 必填项校验
  • 数据类型校验:金额、数字、日期
  • 数据格式校验:金额格式、日期格式、邮件格式、身份证格式
  • 长度校验

2.2 后端

负责数据的保存,保证数据持久化。

数据库保存数据,存在的限制:

  • 数据类型:数字、日期、字符串
  • 数据长度

3、校验逻辑探讨

3.1 业务合理性

站在业务角度看,暂存是要把已填的数据先存起来,其实没有任何校验逻辑也没问题。

没有任何校验,就意味着数据可以随便输入,也就意味着会有错误数据保存:比如金额输入的是汉字等。

所以暂存是否允许输入错误数据呢?这是一个核心问题。

|----------------------|------------------|--------------|
| 方案 | 优点 | 缺点 |
| 不做任何校验 | 随便存 | 有错误数据 |
| 不做必填项校验,其它校验需要做:填就填对 | 1、数据正确 2、填多少保存多少 | 要填就得填正确,略有限制 |

3.2 技术实现方案

|----------------------|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| 技术方案 | 优点 | 缺点 |
| 不做任何校验 | 1、暂存时直接去掉校验逻辑,前端简答 | 1、后端数据库有类型限制,想达到这个效果有2种方式: * 所有字段都是字符串类型: * 所有表结构都需要调整 * 日期、数字等计算逻辑需要特殊处理 * sql 操作都需要转换类型 * 所有模块暂存的数据单独找一个表保存,json方式,给什么存什么 * 增加一个暂存表 * 暂存回显需要读这个表 |
| 不做必填项校验,其它校验需要做:填就填对 | 1、后端数据可以正常保存在数据库 | 1、前端暂存时需要排除必填项校验 |

3.3 总结

系统的核心是流程及数据,站在这个角度看,数据是需要保证正确性的。

综合考虑业务需求、实现难度,我认为暂存应该只去掉必填校验,其它校验保留。

相关推荐
稻草人22221 天前
java Excel 导出 ,如何实现八倍效率优化,以及代码分层,方法封装
后端·架构
数据智能老司机1 天前
精通 Python 设计模式——创建型设计模式
python·设计模式·架构
数据智能老司机1 天前
精通 Python 设计模式——SOLID 原则
python·设计模式·架构
bobz9651 天前
k8s svc 实现的技术演化:iptables --> ipvs --> cilium
架构
云舟吖1 天前
基于 electron-vite 实现一个 RPA 网页自动化工具
前端·架构
brzhang1 天前
当AI接管80%的执行,你“不可替代”的价值,藏在这20%里
前端·后端·架构
Lei活在当下2 天前
【业务场景架构实战】4. 支付状态分层流转的设计和实现
架构·android jetpack·响应式设计
架构师沉默2 天前
设计多租户 SaaS 系统,如何做到数据隔离 & 资源配额?
java·后端·架构
kfyty7252 天前
不依赖第三方,不销毁重建,loveqq 框架如何原生实现动态线程池?
java·架构
刘立军2 天前
本地大模型编程实战(33)用SSE实现大模型的流式输出
架构·langchain·全栈