const { brandId, countryId, categoryId } = req.body
let products;
if (!brandId && !countryId && !categoryId) {
products = Product.findAll(where: {.....})
}
if (brandId && !countryId && !categoryId) {
products = Product.findAll(where: {.....})
}
if (!brandId && countryId && !categoryId) {
}
}
как избавиться от этого? изучаю, может быть есть какие то хитрости?
Получается что в зависимость от сочетания полей имеющих значение у тебя будет разное поведение? Можно поместить в массив такие структуры данных для каждого if случая interface ValidationCase { fields: string[]; onMatch: (arg1, arg2) => void } Потом проходить по массиву и если будет match с fields, то вызывать onMatch()
угу, фильтрация по введенным параметрам
перечислять ифами наверное неверно(
ЧТо значит перечислять if'ми?
ну как у меня) если такой то параметр введен - то такой то запрос и тд
а по твоему ответу спасибо, пойду читать)
Нормально, просто иногда это превращается в говнокод который трудно поддерживать. В твоём случае мне кажется это и есть
вот я и не хочу делать ифами) потому то я и здесь)
Ну ты кстати можешь просто ифами формировать запрос который потом передашь в .findAll
where: { …(someCondition && { someField: someField })
ты undefined деструктить собрался?
Где ты увидел деструктуризацию? Ты можешь в someCondition хоть null запихнуть — он просто дальше не пойдёт
Нет
Если someCondition undefined, то спредить будешь undefined
Дальше не пойдёт, но спред то всё равно будет и будет ошибка
Обсуждают сегодня