我有一个明确的端点,我需要从前端获取查询通行证
const { filterType1, filterType2 } = req.query
问题是filterType来自其他地方,说它是数组列表
const list = ['priceFilter', 'ageFilter', 'destinationFilter']
我可以这样做吗?
const { list.map(o => o) } = req.query
表示
const { priceFilter , ageFilter, destinationFilter } = req.query
答案 0 :(得分:0)
您可以根据filterTypes
数组过滤请求的查询参数,然后通过迭代访问filters
。
function getFilters(req, filterTypes) {
return Object.keys(req.query).reduce((acc, k) => {
const isAllowedFilter = filterTypes.some(type => type === k);
if (isAllowedFilter) {
return { ...acc, [k]: req.query[k] };
}
return acc;
}, {});
}
const filterTypes = ['priceFilter', 'ageFilter', 'destinationFilter'];
const req = {
query: {
priceFilter: '50-100',
ageFilter: '8-20',
destinationFilter: 'foo',
unknownFilter: 'unknown',
},
};
const filters = getFilters(req, filterTypes);
Object.keys(filters).forEach(k => console.log(`${k} -> ${filters[k]}`));