деструктурирующая база по динамическому значению es6 - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть экспресс-конечная точка, мне нужно получить запрос от внешнего интерфейса

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 голосов
/ 26 апреля 2019

Вы можете отфильтровать параметры запроса в соответствии с массивом 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]}`));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...