我现在正在学习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都需要使用.我想返回所有符合该查询的属性。我不知道如何开始做。
首先,对于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});
希望能帮到你