Sequelize op.like не работает корректно
Я недавно столкнулся с работой базы данных в node.
Теперь у меня проблема с запросом Sequelize.
Есть простой код. И там op.like выдает не корректный запрос sql.
В место %delay% в запросе появляетса '\"%delay%\"'.
Вот часть кода и ответ от сервера.
const Sequelize = require('sequelize');
const Op = Sequelize.Op;
const shortcodes = await Shortcode.findAll({
where: {
project_id: project.id,
settings: {
[Op.like]: `%delay%`
}
}
});
Вот сам Sql созданный данной библиотекой.
SELECT
*
FROM
`shortcodes` AS `shortcode`
WHERE `shortcode`.`project_id` = 1
AND `shortcode`.`settings` LIKE '\"%delay%\"';
Ответы (1 шт):
Автор решения: Raz Galstyan
→ Ссылка
Прорыв весь интернет наткнулся на профиль github одного человека. У которого была примерно идентичная проблема.
И как я понял это ошибка самой библиотеки Sequelize.
Вот решение данной проблемы.
Может и вам пригодиться.
Уже измененный и рабочий код:
const Sequelize = require('sequelize');
const Op = Sequelize.Op;
const shortcodes = await Shortcode.findAll({
where: {
project_id: project.id,
settings: {
[Op.like]: Sequelize.literal('\'%delay%\'')
}
}
});
Вот уже корректный сгенерированный ՝sql՝ запрос.
SELECT
*
FROM
`shortcodes` AS `shortcode`
WHERE `shortcode`.`project_id` = 1
AND `shortcode`.`settings` LIKE '%delay%';
А вот сам ресурс откуда все это я прочитал.