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

请求与参数出现[object Object]问题排查(React+Rails)

解决React请求Rails后端时参数显示[object Object]的问题

问题原因

服务器日志里brand_id和user_id显示为[object Object],本质是前端传递的参数是对象类型,而非预期的字符串格式MongoDB文档ID。当对象被转成URL查询参数时,会默认调用toString()方法,结果就是[object Object]。

排查与修复步骤

1. 确认Cookie存储的内容类型

先看React控制台输出的bId和uId:如果控制台打印的是对象(比如{ _id: "62181bf113d9c187cb00004c", ... }),说明存入Cookie时错误地存储了整个对象,而非单独的ID字符串。

修复Cookie存入逻辑

确保存入bId和uId时,只存MongoDB的ID字符串:

// 示例:存入品牌ID(假设brand是Mongoose文档对象)
Cookies.set('bId', brand._id.toString()); 
// 或直接存字符串ID(如果已经是字符串)
Cookies.set('bId', '62181bf113d9c187cb00004c');

2. 前端请求时主动提取ID(如果Cookie已存对象)

如果无法修改存入逻辑,可在请求时从对象中提取ID:

export const fetchNavbarStats = () => (dispatch) => {
  const brandObj = Cookies.get('bId');
  const userObj = Cookies.get('uId');
  // 注意:如果Cookie存的是JSON字符串,需要先解析
  const brandId = typeof brandObj === 'object' ? brandObj._id : JSON.parse(brandObj)._id;
  const userId = typeof userObj === 'object' ? userObj._id : JSON.parse(userObj)._id;

  dispatch(requestNavbarStats());
  $.ajax({
    method: 'get',
    url: `${process.env.REACT_APP_BASE_URL}/jwt_api/navbar_stats`,
    data: { brand_id: brandId, user_id: userId },
    success(data) {
      dispatch(receiveNavbarStats(data));
    },
    error(xhr) {
      console.log(xhr)
    },
  });
};

3. 验证参数传递

修复后,检查Rails服务器日志,应该能看到预期的MongoDB ID格式:

Started GET "/jwt_api/navbar_stats?brand_id=62181bf113d9c187cb00004c&user_id=58bd3736acce3487e7000001" for ::ffff:103.179.39.185 at 2022-11-29 07:08:58 +0000
Processing by JwtApi::NavbarStatsController#show as JSON
  Parameters: {"brand_id"=>"62181bf113d9c187cb00004c", "user_id"=>"58bd3736acce3487e7000001"}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:31:12