如何使用节点/表达式

时间:2020-06-06 13:00:09

标签: javascript node.js json express api-design

我现在正在学习Node / Express,为此,我正在为房地产市场构建API。我正在尝试进行搜索,但是我不知道如何使用可选的查询参数。 我有一条路线,该路线在我的控制器中调用了搜索方法

router.get('/property/search', catchErrors(propertyController.searchProperty));

这是我的方法。

exports.searchProperty = async (req, res) => {
    const property = await Property.find({
    // Search params
    });
    res.json(property);
};

我想用查询参数访问URL,如果存在有效的参数,请在.find方法中使用它。 例如,如果我点击

http://localhost:7777/property/search?county=kildare&bedrooms=2

每个property/house model具有许多属性,例如address, bathrooms, bedrooms, county , price, town, type。并非每个参数都需要使用。 我想返回与该查询匹配的所有属性。我不知道如何开始。

1 个答案:

答案 0 :(得分:0)

拳头,要获取/验证查询参数,您可以使用如下代码:

const validAttr = ['address',  'bathrooms', 'bedrooms'];
const validQueryParams = Object.keys(req.query)
   .filter(key => validAttr.includes(key))
   .map(v => {
      const obj = {};
      obj[v]=req.query[v];
      return obj
   });

然后使用有效查询参数列表执行查询:

const property = await Property.find({$or: validQueryParams});

希望这对您有帮助