Expressjs req.query无法按预期工作

时间:2018-03-07 00:11:37

标签: node.js express

我是表达新手,这是我的第一份工作。我希望req.query只返回有非洲位置的河流。我没有得到我想要的东西,而是返回数据库中的所有河流。这是我的代码:

数据库

var rivers = [
    {"name": "Nile", "location": "africa"},
    {"name": "Niger", "location": "africa"},
    {"name": "Indus", "location": "asia"},
    {"name": "Danube", "location": "europe"},
    {"name": "Thames", "location": "europe"},
    {"name": "Ohio", "location": "america"}
];

路由器

router.get('/', function (req, res) {
    res.send(req.query.location);
}); 

http://localhost:3000/rivers?location=africa

1 个答案:

答案 0 :(得分:1)

您可以使用Array.filter查找数组中的所有相应元素,具体取决于传递的req.query.location,然后res.send将它们传回客户端。

以下是一个例子:

var rivers = [
  { "name": "Nile", "location": "africa" },
  { "name": "Niger", "location": "africa" },
  { "name": "Indus", "location": "asia" }
]

router.get('/rivers', function (req, res) {
  const matchingRivers = rivers.filter(river => {
    return river.location === req.query.location
  });

  res.send(matchingRivers);
});

并访问:http://localhost:300/rivers?location=africa

请记住:

  • req.query包含您通过网址发送的查询参数。
  • res.send会向您的客户发送一些内容。