zero-doc icon indicating copy to clipboard operation
zero-doc copied to clipboard

关于go-ctl模版更新方法的缺陷

Open chenjianjun571 opened this issue 3 years ago • 0 comments

如果一个表有唯一索引,目前的goctl模版是有缺陷的

自动生成的Update方法是基于传入的data字段进行缓存key组合并删除。如果使用者修改的是唯一索引字段,会导致修改前的唯一索引缓存key不会被删除。 比如: 用户表 user 主键key是id,唯一索引是phone 数据库存在一条记录id:3 phone1:123456 对应的redis缓存是 user:id:3-----指向>>>>数据 user:phone1:123456-------指向>>>>3 使用放把id为3的电话号码修改为654321,那么按照目前的方式,缓存里面会出现这样的情况: user:id:3-----指向>>>>数据 user:phone1:123456-------指向>>>>3 (未删除) user:phone1:654321-------指向>>>>3(修改后访问新增)

解决办法 在update的时候,通过id取一下旧值,然后通过旧值把缓存key删除

我的实现方案,官方可以考虑 image

chenjianjun571 avatar Sep 15 '21 12:09 chenjianjun571