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

使用Express时无法从products.js获取单个商品数据问题排查

问题根因

  • 核心是类型不匹配导致匹配失败:req.params.id 从URL路径中获取的所有参数值默认都是字符串类型,而你products数组中存储的商品_id是数字类型,使用===恒等运算符判断时会同时校验值和数据类型,二者类型不一致因此匹配失败,最终返回undefined。

修复方案

以下两种方案任选其一即可:

  1. 匹配时主动将URL参数转为数字类型,再做恒等判断
app.get('/api/product/:id', (req, res) => {
  const product = products.find((x) => x._id === Number(req.params.id));
  res.json(product);
});
  1. 将恒等运算符===替换为宽松相等运算符==,匹配时会自动做隐式类型转换
app.get('/api/product/:id', (req, res) => {
  const product = products.find((x) => x._id == req.params.id);
  res.json(product);
});

可选优化

建议增加商品不存在的异常判断,优化接口返回表现:

app.get('/api/product/:id', (req, res) => {
  const product = products.find((x) => x._id === Number(req.params.id));
  if (product) {
    res.json(product);
  } else {
    res.status(404).json({ message: '对应商品不存在' })
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:06:05