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

React项目中用户下单时userID存入数据库为null问题排查求助

问题排查&解决步骤

  • 第一步:验证请求发送前的实际值
    在构造bookToBePurchased对象后、发送接口请求前,直接打印整个对象确认userId是否存在有效值:

    const bookToBePurchased = {
        // 你的原有赋值逻辑
    }
    console.log('提交的完整参数', bookToBePurchased)
    // 此处是你调用接口的代码
    

    如果此处userId已经是null/undefined,继续往下排查;如果此处有有效值,直接跳转第三步。

  • 第二步:确认token获取逻辑的可靠性
    不建议将用户身份信息存在state里,避免挂载时机、异步更新导致的取值异常,直接在onSubmit时实时取token解析即可,修改方案一的代码增加容错处理:

    onSubmit(e){
      e.preventDefault();
      let userId = null
      try {
        const token = localStorage.getItem("token")
        if(token) {
          const decoded = jwt_decode(token, { body: true })
          userId = decoded?.username || null
        }
      } catch (err) {
        console.error('token解析失败', err)
      }
      const bookToBePurchased = {
          userFirstName: this.state.userFirstName,
          userLastName: this.state.userLastName,
          userAddress: this.state.userAddress,
          userId: userId,
          bookListingId: this.props.bookListingId,
          transactionStatus: this.props.paymentStatus,
          paymentId: this.props.paymentId
      }
      // 后续接口调用逻辑
    }
    
  • 第三步:验证网络请求实际传输内容
    打开浏览器开发者工具的「网络」面板,找到对应的提交请求,查看请求体里的userId字段是否存在、值是否正确:

    • 如果请求里没有该字段/值为null:检查你是否有全局请求拦截器、参数序列化逻辑过滤了该字段,或者字段名拼写和后端要求不一致(比如后端要求字段为user_id/userID而你写的是userId)
    • 如果请求里userId是有效值:问题出在后端,排查后端接口是否正确接收该字段、插入数据库的SQL是否遗漏了该字段的映射。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:24:05