首页 > 解决方案 > 如何在 Node.js 上的 Express.js 中传递查询字符串并获取对象结果?

问题描述

我在 nodeJs 中创建我的 api 并表达,我想通过传递字符串参数来获取一个对象,但我无法获取这个对象。

这是我的应用

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"
      }
 ]


//http://localhost:3000/produits?codeProduit=78
app.get('/produits', (req, res) => {
    if(req.query.codeProduit != undefined && req.query.codeProduit != '') {
        res.json(produits[(req.query.codeProduit)])
    }  else {
        res.json(produits)
    }
     
 })
 
 app.get('/produits', (req, res) => {
      res.json(produits)
  })

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

我想得到这个对象

{
 "codeProduit":"78",
 "nomCat":"nomCat11",
 "typeCat":"typeCat11"
}

当我调用这个网址时:http://localhost:3000/produits?codeProduit=78

请问我该怎么做?

标签: node.jsexpressquery-string

解决方案


你正在做produits[78]的是未定义的,所以你需要使用find来获得预期的产品

app.get('/produits', (req, res) => {
  if (req.query.codeProduit != undefined && req.query.codeProduit != '') {
    const result = produits.find(p => p.codeProduit === req.query.codeProduit);
    result ? res.json(200).json(result) : res.status(404).json();
  } else {
    res.json(produits);
  }
});

推荐阅读