页面上简单的添加或者更新的逻辑

95 阅读1分钟

问题描述

根据用户名查询订单的信息,如果查询到了就更新,如果没查询到就修改

踩坑经历

  1. 打开页面的时候调用后台查询接口
  2. 把查询到的信息展示到界面
  3. 无论是添加还是更新,都是调用后台的接口,让后台进行处理
  4. 如果前端页面没有数据,那么后台接收的bean里面就没有id,这个时候会执行添加
  5. 如果前端页面有数据,后台接收到的bean里面就有id,直接根据id 去更新
  6. 这个时候会有个问题,如果用户疯狂点击添加,一下子发很多个同样的请求,有可能会导致后端重复添加数据(第一个请求的添加执行了,但是没执行完)
  7. 第二个问题,这种方式需要一个接口去接收bean,然后再需要一个添加和一个修改的方法,一共3个,代码多

解决方法

graph TD
打开页面 --> 根据用户名查询是否存在订单
根据用户名查询是否存在订单 --> |是| 把查询到的信息展示到输入框 
根据用户名查询是否存在订单 --> |否| 获取唯一ID,用于添加记录
把查询到的信息展示到输入框 --> |更新数据| 根据查询到的记录ID更新信息
根据查询到的记录ID更新信息 -->  获取最新的数据加载到页面
获取唯一ID,用于添加记录 --> 添加id(前端携带id)
添加id(前段携带id) --> 获取最新的数据加载到页面

思考

是否真的可以解决问题?

  • 如果用户是执行添加操作,把id和信息重复发送,但是后台添加成功一条记录之后,这个id就存在数据了,其他相同的记录就会添加失败。有效防止重复添加
  • 这个时候后端直接写2个接口,一个添加,一个修改。在前段判断id是否存在,然后去执行添加或者修改操作,一共就2个接口