写登录功能的时候,发现表单验证正常但未返回数据库的用户信息数据,data为null
前端也并没有什么问题:
this.$refs.loginForm.validate((valid) => {
if (valid) { //valid成功为true,失败为false
//去后台验证用户名密码
this.$axios.post(this.$httpUrl+'/user/login',this.loginForm).then(res=>res.data).then(res=>{
console.log(res);
if(res.code==200){
//console.log(res.data.user);
//存储
sessionStorage.setItem("CurUser",JSON.stringify(res.data));
//console.log(res.data.menu)
// this.$store.commit("setMenu",res.data.menu);
//跳转到主页
this.$router.replace('/Index');
}else{
this.confirm_disabled=false;
// console.log(res);
alert('校验失败,账号或密码错误!');
return false;
}
});
} else {
this.confirm_disabled=false;
console.log('校验失败');
return false;
}
});
后来经别人提醒,发现后端接口返回值函数有问题
我原来的接口:
//登录
@PostMapping("/login")
public Result login(@RequestBody User user){
List list = userService.lambdaQuery()
.eq(User::getUsername,user.getUsername())
.eq(User::getPassword,user.getPassword()).list();
return list.size()>0?Result.suc():Result.fail();
}
修改后:
@PostMapping("/login")
public Result login(@RequestBody User user){
List list = userService.lambdaQuery()
.eq(User::getUsername,user.getUsername())
.eq(User::getPassword,user.getPassword()).list();
return list.size()>0?Result.suc(list.get(0)):Result.fail();
}
原因是我的Result.suc()
public class Result {
private int code;//编码200/400
private String msg;//成功、失败
private Long total;//总记录
private Object data;//数据
public static Result fail(){
return result(400,"失败",0L,null);
}
public static Result suc(){
return result(200,"成功",0L,null);
}
public static Result suc(Object data){
return result(200,"成功",0L,data);
}
public static Result suc(Object data,Long total){
return result(200,"成功",total,data);
}
public static Result result(int code,String msg,Long total,Object data){
Result res =new Result();
res.setData(data);
res.setMsg(msg);
res.setCode(code);
res.setTotal(total);
return res;
}
}
这里默认的是null,不传参就默认为null了