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

Node.js下Express.js如何传递查询字符串并获取目标对象结果

问题原因

你的代码存在两个问题导致无法返回预期结果:

  • 直接把请求参数codeProduit的值当做数组下标取值,数组下标是从0开始的数字索引,不是你存储在对象中的codeProduit字段值,该写法不可能匹配到目标数据
  • 重复注册了两次GET /produits路由,Express路由按注册顺序匹配,后注册的路由完全不会生效,属于冗余代码

修改方案

把路由部分的逻辑替换为用数组find方法匹配对应字段的元素,同时删除冗余的重复路由即可,修改后的完整代码如下:

const express = require('express')
const app = express()

const produits = [
      {
         "codeProduit":"78",
         "nomCat":"nomCat11",
         "typeCat":"typeCat11"
      },
      {
         "codeProduit":"82",
         "nomCat":"nomCat21",
         "typeCat":"typeCat21"
      },
      {
         "codeProduit":"69",
         "nomCat":"nomCat31",
         "typeCat":"typeCat31"
      }
 ]

app.get('/produits', (req, res) => {
    const targetCode = req.query.codeProduit
    if(targetCode !== undefined && targetCode !== '') {
        // 匹配codeProduit字段相等的元素
        const target = produits.find(item => item.codeProduit === targetCode)
        if(target) return res.json(target)
        // 可选:匹配不到时返回404提示
        return res.status(404).json({message: '对应产品不存在'})
    }
    res.json(produits)
})

app.listen(3000,() => {
    console.log('Started on port 3000')
})

修改后访问http://localhost:3000/produits?codeProduit=78即可返回你预期的对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:18:03