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

调用无参API端点持续报错:需传入12字节或24位十六进制字符串

问题解决思路
  • 排查getOrder处理函数内部逻辑
    这个错误是MongoDB验证ObjectId格式时抛出的,说明函数里肯定有代码在尝试用不符合要求的字符串作为ObjectId查询。比如:

    • 有没有误写Model.findById(req.params.id)这类代码,但当前路由根本没定义id参数,导致传入undefined或错误格式的字符串;
    • 有没有硬编码的测试ID格式错误,或者从缓存、其他接口获取的ID值不符合12字节/24位十六进制字符串要求。
  • 确认实际请求的完整性
    前端代码写的是无参数GET,但要检查浏览器Network面板里的实际请求:

    • 确认请求URL确实是/api/campaign/order,没有被拦截添加额外路径或查询参数;
    • 检查请求头、Cookie里是否携带了后端会当作ObjectId处理的字段,且格式错误。
  • 检查路由匹配顺序
    如果后端有类似router.route("/campaign/:id")的路由,且定义在/campaign/order之前,那么请求/campaign/order时会被前者匹配,order会被当作:id参数传入对应的处理函数,而该函数如果用这个值去查MongoDB,就会触发ObjectId格式错误。这种情况要把精确匹配的/campaign/order路由放在带参数的路由前面。

  • 排查路由相关中间件
    检查全局或该路由组的中间件,有没有中间件会从请求中提取数据并尝试转换为ObjectId,比如从header、query里取某个字段当作ID处理,而该字段值格式不符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:54:22