如何在SM30事件中获取原始(未编辑)行数据?
关于编辑期间数据修改验证的问题解答
首先明确:这类自动生成的程序一般都会在数据加载阶段,把从数据库读取的初始原始数据存在专门的结构里,大概率是和
TOTAL[]、EXTRACT[]对应的原始数组(比如叫ORIGINAL_TOTAL[]、ORIGINAL_EXTRACT[]),或者是一个全局/组件级的快照对象。怎么捕获这些初始值:
- 查读取函数的处理逻辑:找到那个已经存在的数据库读取函数,看它把加载回来的数据赋值给了哪个变量——初始数据肯定在这里落地,只是你没注意到对应的存储结构而已。
- 调试时查运行时变量:在数据加载完成、还没开始编辑的时候,用调试工具(前端开控制台看全局/组件变量,后端看调试器的内存快照)搜当前作用域里的变量,找类似
initialData、originalRecords这类命名的属性,大概率就是存初始值的地方。 - 手动拷贝初始状态:要是实在找不到现成的存储结构,就在编辑操作开始前,对
TOTAL[]和EXTRACT[]做深拷贝,把拷贝结果存到临时变量里,后续验证用这个拷贝值就行。
验证逻辑参考:用户提交编辑时,调用现有读取函数重新拉取数据库最新数据,和初始数据做字段级对比,有差异就说明数据被别人改了,直接提示用户或者拒绝提交。
内容的提问来源于stack exchange,提问作者isekaid_maou
相关产品推荐
相关产品推荐

