0

我正在尝试在 Express 中添加查询参数。这将是一个可选参数。我想添加一个数量限制,以限制返回的响应数量。

所以我尝试了这个网址:

http://localhost:3000/restaurants/mowgli?limitQuery=4

使用此代码:

app.route("/restaurants/:restaurantName")

  .get(function(req, res) {
    let partialToMatch = new RegExp(req.params.restaurantName, 'i');
    
    let limitQuery = req.query.limitQuery
    console.log(limitQuery);
    

    Restaurant.find({
      BusinessName: partialToMatch
    }, null, {
      limit: limitQuery
    }, function(err, foundRestaurant) {
      if (foundRestaurant) {
        res.send(foundRestaurant)
      } else {
        res.send("No restaurants matching that title was found.");
      }
    });
  });

但它会引发错误“找不到与该标题匹配的餐厅。”。控制台成功记录limitQuery参数,但是传到limit字段时好像出错了。

注意:如果我不使用可选的查询参数,通过删除limitQuery 变量并恢复到我的旧代码(并在限制字段中硬编码一个数字,例如limit: 25),一切正常。

4

1 回答 1

0

已解决 - 变量 limitQuery 以字符串而不是整数的形式返回。所以我用 parseInt 进行了更改,现在它将一个数字传递给限制字段并且可以工作。这是我用来解决问题的额外代码:

var limmy = parseInt(limitQuery, 10);

然后在 Restaruant.find 查询中,限制字段如下所示:

limit: limmy
于 2022-01-25T11:06:10.560 回答