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

无框架Node.js API按指定产品ID查询无法返回对应产品如何解决

问题原因

核心问题是ID的类型不匹配:
你在server.js中通过req.url.split('/')[3]拿到的id是字符串类型(比如请求/api/products/1时拿到的是"1"),但products.js中所有产品的id字段都是数字类型。
Array.prototype.find()的判断条件用了严格相等运算符===,会同时校验值和类型,两类id永远不相等,所以找不到匹配的产品。

修复方案

任选一种即可:

  1. 拿到id时直接转换为数字(推荐)
    修改server.js中的id获取逻辑:
// 原代码
const id = req.url.split('/')[3]
// 修改为
const id = Number(req.url.split('/')[3])
// 可增加合法性校验,避免传入非数字
if (isNaN(id)) {
  res.writeHead(400, { 'Content-Type': 'application/json' });
  return res.end(JSON.stringify({message: '无效的产品ID'}))
}
  1. 匹配时转换类型
    修改productModel.js中find的判断逻辑:
// 原代码
const product = products.find(p => p.id === id)
// 修改为
const product = products.find(p => p.id === Number(id))

其他注意事项

  • 你代码中有几处笔误需要修正:productController.js里的提示信息拼写错误,Prdouct应该为Product;注意文件名大小写、拼写要一致,比如server.js导入的是productControllers.js,你目录里的文件名是productController.js,避免出现模块找不到的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:54:06