用户在更新表单信息时,点击确认,无论数据是否更新,后台都会拿着这些数据去数据库做update操作。
一般情况下,表单数据保存在不同表,甚至保存在不同库。
用户每次更新数据都需要更新多表,多库。
更进一步,一次表单更新需要调用多次rpc服务。
此类更新称为全量更新。
问题:
是否可以优雅地判断用户信息改变的部分,从何做到局部更新/增量更新?
想法一:update之前先查询数据,判断是否有更新,有更新才执行update。
想法二:前端传每个字段是否改变的标志位。
用户在更新表单信息时,点击确认,无论数据是否更新,后台都会拿着这些数据去数据库做update操作。
一般情况下,表单数据保存在不同表,甚至保存在不同库。
用户每次更新数据都需要更新多表,多库。
更进一步,一次表单更新需要调用多次rpc服务。
此类更新称为全量更新。
问题:
是否可以优雅地判断用户信息改变的部分,从何做到局部更新/增量更新?
想法一:update之前先查询数据,判断是否有更新,有更新才执行update。
想法二:前端传每个字段是否改变的标志位。
用户点击修改表单的时候 js先拿到这个表单的数据
用户提交表单的时候 把要提交的表单 和 之前拿到的表单 对比一下
初步校验
有改动
再提交到后台 后台可再做校验 按照你想法一来 也可不再做校验
没有改动
前台提示用户没有修改.
4 回答1.2k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
2 回答705 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.6k 阅读
2 回答1.3k 阅读
如果是想法一的话,给数据库的压力跟原本的操作我觉得差不多,可能还大一些。
想法二的话,标志位可能也有点麻烦。
有个脑洞思路,没实践过:
假设前端拿到表单信息
model
并映射到UI后,建立一个副本model_update
。把
model
的结构信息复制给model_update
,然后UI更新表单信息时,新数据写入model_update
。提交时提交
model_update
,这样没被修改的地方就是null
,可以直接跳过。这个做法好处可能在于对于现有的前后端接口数据结构的约定不用进行更改,只是不清楚你们用的前端框架是否合适用着这种办法。