You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Axios向后端发送MSAL token时遇Approver1lvl空值报错如何解决

问题根源

你现在的错误核心是后端接收不到approver1lvl字段的值导致存入数据库时为null,主要有两个问题:

  1. 请求体结构和后端预期不匹配
    你当前调用customInstance.post时传的参数是{user, userId: jwt.oid},相当于把approver1lvl等用户输入字段都嵌套在了user属性下,结合你Swagger调用成功的情况判断,后端预期是直接平级接收所有字段,所以取不到嵌套在user里的approver1lvl,判定为null触发数据库非空约束报错。
  2. 代码存在未定义变量
    你从userData解构时额外写了不存在的date字段,构造user对象时还用到了未定义的birth变量,这部分也可能引发额外的字段异常。

修复方案

直接把所有需要的字段和从JWT取到的userId平级放在请求体里即可,同时清理无效变量:

const handleSubmit = () => {
  var token = localStorage.getItem("msal.idtoken");
  var jwt = jwt_decode(token);
  const {
    firstName,
    surname,
    co,
    homeAddress,
    postCode,
    city,
    country,
    phonePrefix,
    phoneNumber,
    email,
    approver1lvl,
    employeeId,
    // 如果确实需要birth字段,记得先在useState的初始化字段里加上birth
  } = userData;

  // 可以加个日志先确认approver1lvl是否已经正确赋值
  console.log('approver1lvl值校验:', approver1lvl);

  customInstance.post("Request",  {
    firstName,
    surname,
    co,
    homeAddress,
    postCode,
    city,
    country,
    phonePrefix,
    phoneNumber,
    email,
    approver1lvl,
    employeeId,
    // 如果需要birth字段就加,不需要就删掉
    // birth,
    userId: jwt.oid
  }).then((response) => {});
};

如果你的后端确实要求用户字段嵌套在user属性下,那需要确认后端实体类中Approver1lvl字段属于user对应的子实体,同时检查前端的approver1lvl表单绑定是否正常,确保提交前该字段已经被正确赋值到userData里。


内容的提问来源于stack exchange,提问作者cowefe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:06:05