如何建立查询参数并使用nodeexpress进行搜索。

问题描述 投票:0回答:1

我现在正在学习NodeExpress,为了做到这一点,我正在为一个房产市场建立一个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. 不是每个param都需要使用.我想返回所有符合该查询的属性。我不知道如何开始做。

javascript node.js json express api-design
1个回答
0
投票

首先,对于getvalidate查询参数,你可以使用这样的东西。

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});

希望能帮到你

© www.soinside.com 2019 - 2024. All rights reserved.