Удаление символов, которым не присвоены значения - PullRequest
0 голосов
/ 06 марта 2020

Я использую веб-сервис, который запрашивает базу данных и возвращает результат. Запросы не написаны разработчиками. Они скорее генерируются платформой при запуске приложения.

Фреймворк, который здесь используется, это Nest. js, Sequelize. Используя Op of Sequelize, создается следующий объект

    const where: WhereOptions = {};
where.db_column = f.desired_value || {
  [Op.lte]: f.min_value,
  [Op.gte]: f.max_value,
};

f получен из запроса API. Все параметры фильтра являются необязательными. В идеале это означает функцию, которая создает это, когда объект должен возвращать {}, когда ничего не указано. Прямо сейчас этот фрагмент кода устанавливает объект where с помощью Op.lte: undefined. Я попробовал следующее, чтобы проверить неопределенность и удалить соответствующий элемент из объекта. Но похоже, что Op.lte создает Symbol, и его нельзя обрабатывать как ключ свойства json.

    Object.keys(where).map(key => {
  const property = where[`${key}`];
  if (typeof (property) === 'object') {        
    Object.getOwnPropertySymbols(property).map(propertySymbol => {          
      if (!property[`${(propertySymbol)}`]) {            
         delete property[`${String(propertySymbol)}`];
      }          
    });
  }
});

Он даже не компилируется, поскольку propertySymbol не может быть помещен в условие if, например String

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...