如何在Node.js与MySQL中传递id至where子句及解决404报错
解决Node.js+MySQL查询时的404错误问题
问题背景
要在Node.js与MySQL中实现将id传入where子句进行查询,但前端请求出现404未找到错误,报错信息如下:
Viewer.jsx:19 GET http://localhost:4000/getDetailsFromCid/$%7Bcid%7D 404 (Not Found)
错误原因
- 模板字符串解析失败:前端fetch请求的URL使用了单引号,导致
${cid}变量未被解析,直接作为字符串发送,转义后变成$%7Bcid%7D,请求路径无效。 - 接口路径不匹配:后端接口定义的路径是
/api/getDetailsFromCid/:cid,但前端请求缺少/api前缀,导致后端无法匹配到对应接口。 - 错误处理方式错误:前端用
.then()捕获错误,这是无效的,.then()接收的是成功响应的结果,错误需要用.catch()处理。
修复方案
前端代码(Viewer.jsx)修改
async function redeem(cid) { fetch(`http://localhost:4000/api/getDetailsFromCid/${cid}`) .then(response => response.json()) .then(posts => { console.log("posts", posts) }) .catch(err => { console.log(err); }) }
修改点:
- 将URL的单引号替换为反引号,确保模板字符串变量
${cid}能被正确解析 - 补上
/api前缀,与后端接口路径保持一致 - 把错误处理的
.then()改为.catch(),正确捕获请求过程中的错误
后端代码(index.js)
后端代码本身没有问题,保持原样即可,但需确认:
- Node.js服务运行在4000端口
- 数据库连接配置正确,
Details表存在且包含cid字段
验证
调用redeem函数并传入实际的cid值(如redeem(101)),此时请求地址会变为http://localhost:4000/api/getDetailsFromCid/101,与后端接口匹配,即可正常查询数据库并返回结果。
内容的提问来源于stack exchange,提问作者Hoo
相关产品推荐
相关产品推荐

