Я использую веб-сервис, который запрашивает базу данных и возвращает результат. Запросы не написаны разработчиками. Они скорее генерируются платформой при запуске приложения.
Фреймворк, который здесь используется, это 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