我现在正在学习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
。并非每个参数都需要使用。
我想返回与该查询匹配的所有属性。我不知道如何开始。
答案 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});
希望这对您有帮助