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
相关产品推荐
相关产品推荐

