基于动态值es6的解构

时间:2019-04-26 02:39:23

标签: javascript node.js express ecmascript-6

我有一个明确的端点,我需要从前端获取查询通行证

const { filterType1, filterType2 } = req.query

问题是filterType来自其他地方,说它是数组列表

const list = ['priceFilter', 'ageFilter', 'destinationFilter']

我可以这样做吗?

const { list.map(o => o) } = req.query表示

const { priceFilter , ageFilter, destinationFilter } = req.query

1 个答案:

答案 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]}`));

相关问题