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

使用动态值调用API时Mongoose无法识别wid参数的问题

问题排查与解决方案

核心问题

req.params.wid 本质是字符串类型(HTTP请求的URL参数默认都是字符串),即便你用console.log输出看起来像整数,和数据库中windo_no的整数类型不匹配,导致$match条件无法匹配到数据。

解决步骤

  1. 将wid转换为数字类型
    把从URL参数获取的字符串转为整数,再传入聚合查询:

    let wid = parseInt(req.params.wid, 10);
    // 或者用 Number(req.params.wid),parseInt指定进制更严谨
    
  2. 添加参数合法性校验
    避免转换失败导致的异常:

    if (isNaN(wid)) {
      return res.status(400).json({ error: '无效的wid参数' });
    }
    
  3. 验证数据库字段类型
    确认集合中windo_no字段的类型为数字(Number),而非字符串。可以通过MongoDB命令行或Compass查看:

    db.yourCollection.findOne({}, { windo_no: 1 })
    

    输出中如果windo_no是不带引号的数字,说明类型正确;如果带引号则是字符串,需要修正数据或调整转换逻辑。

修正后的完整代码示例

let wid = parseInt(req.params.wid, 10);

if (isNaN(wid)) {
  return res.status(400).send('无效的wid参数');
}

let result = await model.aggregate([
  {
    $match: {
      windo_no: wid,
    }
  },
  {
    $unwind: '$date'
  },
  {
    $match: {
      'date.date': "2022-09-09"
    }
  }
]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:50:24