我现在正在学习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
每个物业/房屋模型
都有地址,卫生间,卧室,县区,价格,城镇,类型
等多个属性。 不是每个参数都需要使用。 我想返回所有与该查询匹配的属性。 我不知道怎么开始做。
首先,对于获取/验证查询参数,您可以使用如下内容:
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});
希望这对你有帮助