关于Json树实现最小量更新出现的一些bug

系统bug如下图

image1

​ 代码拉下来分析业务需求,看了好久才知道这是要干嘛( Ĭ ^ Ĭ ),现在有一个栏目(json)树需要展平存放进放进数据库表,当切换url拿到新数据对旧数据进行更新后,旧数据会出现没有完全删除的现象,通过与新数据的对比找到未删除数据的特性,因此只需要重点审查对节点进行删除的代码;

​ 这里简单的作了个方法的执行流程图,方便理解 2

重点是这几个删除方法:

image-20230402231128679

最终发现在通过路由查询子栏目这里发现了问题,路由字段是一个由该节点的父节点直至根节点中间所有的id,用逗号间隔所组成的字符串

image-20230402231837335

故此处应用右模糊查询likeRight('xxx'%);

除此之外更新还有一处bug

image-20230402233854342

这里判断栏目如果是非叶子节点(中间栏目)则继续进行递归操作,所以这里父栏目参数应该为southCatalog对象;

关于diff算法

​ 项目逻辑问题不大,只有细小的地方出现了错误,要找到这两个bug还是有点困难;起初我还想这种更新为啥不直接把原来的数据全清空再直接插入新的数据呢?估计是在性能方面损耗较大吧,所以需要一个最小量更新的方法;

下面是VUE的虚拟DOM通过diff变成真正的DOM过程

。。。。。暂时写到这,后面继续补充