提问者:小点点

如何建立查询参数并使用Node/Express执行搜索


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

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

每个物业/房屋模型都有地址,卫生间,卧室,县区,价格,城镇,类型等多个属性。 不是每个参数都需要使用。 我想返回所有与该查询匹配的属性。 我不知道怎么开始做。


共1个答案

匿名用户

首先,对于获取/验证查询参数,您可以使用如下内容:

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

希望这对你有帮助