#mysql #node.js #sequelize.js
Вопрос:
Я пытаюсь разработать поисковый API.
Получите значение ключевого слова от клиента и включите данные, если они содержат какие-либо из programs.title, programs.description и companies.name.
Я хочу получить данные из такой таблицы(MySQL):
Схема таблицы
Программы
Клавиша | ценность |
---|---|
ID | целое число(pk) |
Компании | целое число(compaanies.id) |
Название | строка |
Описание | строка |
компании
Клавиша | ценность |
---|---|
ID | целое число(pk) |
Имя | строка |
Это необработанный запрос с результатами, которые я хочу:
SELECT * FROM (SELECT *, (SELECT name FROM companies WHERE companiesId = companies.id) AS companiesName FROM programs) as program
WHERE program.title LIKE '%${keyword}%'
OR program.description LIKE '%${keyword}%'
OR program.companiesName LIKE '%${keyword}%'
Но я хочу разработать это с помощью построителя запросов sequelize. (На самом деле объединяется больше таблиц, и иерархическая структура, возвращаемая sequelize, уже используется интерфейсом. Я просто хочу добавить companies.name к функции поиска.)
Код, за исключением companies.name является:
models.program.findAll({
where: {
[Op.or]: {
title: {
[Op.like]: `%${keyword}%`,
},
description: {
[Op.like]: `%${keyword}%`,
},
},
},
include: [{
model: models.company,
}],
})
Как я могу получить результат?