如何做表单局部/增量更新?

用户在更新表单信息时,点击确认,无论数据是否更新,后台都会拿着这些数据去数据库做update操作。

一般情况下,表单数据保存在不同表,甚至保存在不同库。

用户每次更新数据都需要更新多表,多库。

更进一步,一次表单更新需要调用多次rpc服务。

此类更新称为全量更新。


问题:

是否可以优雅地判断用户信息改变的部分,从何做到局部更新/增量更新?

想法一:update之前先查询数据,判断是否有更新,有更新才执行update。

想法二:前端传每个字段是否改变的标志位。

阅读 5.1k
2 个回答

如果是想法一的话,给数据库的压力跟原本的操作我觉得差不多,可能还大一些。
想法二的话,标志位可能也有点麻烦。

有个脑洞思路,没实践过:

假设前端拿到表单信息 model 并映射到UI后,建立一个副本 model_update
model的结构信息复制给 model_update,然后UI更新表单信息时,新数据写入 model_update
提交时提交 model_update,这样没被修改的地方就是 null,可以直接跳过。

这个做法好处可能在于对于现有的前后端接口数据结构的约定不用进行更改,只是不清楚你们用的前端框架是否合适用着这种办法。

用户点击修改表单的时候 js先拿到这个表单的数据
用户提交表单的时候 把要提交的表单 和 之前拿到的表单 对比一下
初步校验
有改动

再提交到后台 后台可再做校验 按照你想法一来 也可不再做校验

没有改动

前台提示用户没有修改.
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题