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
相关产品推荐
相关产品推荐

