时至如今,我已无F~~K可说 …
作为一个刚入门编程一年不到的小菜鸟,凌晨2:00,还在苦苦的躺在床上修改Bug。。
咳咳,进入正题
故事背景(废话)
一个小时前我正美滋滋的看着黑马程序员之Java项目实战《瑞吉外卖》的P46 业务开发Day3-08-删除分类_功能完善。整堂课共23分11秒,在前20分钟前,那像是吃了德芙一般的丝滑感,让我沉浸其中,欲罢不能。正当我畅快淋漓地敲完代码,准备跟着赵老师进行测试的时候……
是的,不出意外的话这里要出意外了。
突然!!删除失败……ERROR……红色……当前分类下关联了菜品,不能删除……(相信体会过的就懂,肯定懂,百分百的懂!)
简单来说呢,就是报错了,出Bug了,晚上的愉快时光已经毁灭了。。
而赵老师那边,可顺畅了说出那句:“你看,删除成功了吧!”。
……作为一个菜鸟已经想自杀了,满脑子的想:啊…我又是哪里没好好跟着敲对了;啊…我又是哪里粗心了;啊?啊?啊?啊?啊?啊?啊?啊?x10000000次
咳咳,进入真正的正题(解决问题环节)
问题分析
-
前端请求与后端对不上号
如果前期有仔细跟着赵老师通过网页的开发者工具仔细查看功能的请求URL及负载的时候,想必就会发现:在进行删除菜品或套餐时,所发回来的请求是这样的
没错,前端所传回来的是ids
,并不是id
。而你对照你所写的后端代码就会发现,你全是用id所接收的!! -
调用count()方法时,并没有传入对应的LambdaQueryWrapper
仔细的小伙伴(或者像我一样大冤种找bug找了一小时的人)应该会发现,在CategoryServiceImpl类中的如下代码中,count()
方法内并未传入与之对应的LambdaQueryWrapper
而在int count1
所调用的count()
方法中是有传入相对应的dishLambdaQueryWrapper
这就直接导致了,其所调用的方法所赋予count2
的值必定大于0。(debugger一下就好了)
那么,解决方案来了
按如上问题分析,我们第一步仅需:
找到该功能的前端接口(在backend/api/category.js
中),将deleCategory
方法中的ids
,均改为id
。
该作用是将前端其请求URL及负载改为id,使其与你的后端代码可以对应上,而不是ids。
第二步是:
在CategoryServiceImpl.java
类中,将
int count2 = setmealService.count();
的count()
中添入setmealLambdaQueryWrapper;
以上是针对于大部分出现该问题的解决办法,修bug一个小时,写文章一个小时,草草收尾下~能帮到你们就最好。晚安!