#typescript #search #sequelize.js #backend
#typescript #Поиск #sequelize.js #серверная часть
Вопрос:
Привет, я пытаюсь создать функцию поиска и фильтрации для базы данных, в которой пользователь может включать фильтры и искать определенные записи. Я использую typescript и sequelize.
Я хотел бы вернуть список элементов, к которым применяются фильтры и применяется условие поиска. Я хочу, чтобы мой код делал что-то вроде этого:
const { Op } = require('sequelize');
let options = {};
if(searchParameters.name){
options = { [Op.like]: { itemName: '%' searchParameters.name '%'}}
}
return Item.findAll({
where: options
}
Я пытаюсь применять только те фильтры, которые фактически предоставил пользователь, и отклонять, если фильтр равен нулю, но я не могу найти способ заставить его работать.
Ответ №1:
В конечном итоге вы пытаетесь создать объект JSON для параметров, который содержит where
свойство. Для этого вы можете добавить критерии к параметрам на основе любых критериев, которые вы хотели бы. В вашем примере указан неправильный формат where
аргументов, вы хотите получить что-то вроде этого:
const options = {
where: {
itemName: {
[Op.like]: `%${searchParameters.name}%',
},
},
};
Чтобы попасть туда условно, было бы похоже на следующее:
const { Op } = require('sequelize');
// ... code
const where = {};
if (searchParameters.name){
where.itemName = {
[Op.like]: `%${searchParameters.name}%`,
}
}
const items = await Item.findAll({ where });