У меня есть модель билета и модель комментария. Билет имеет отношение hasMany к модели комментариев. Я хочу искать билеты по ключевому слову. Ключевое слово будет сопоставлено с атрибутом объекта модели билета и атрибутом body модели комментария.Как реализовать функцию поиска с помощью SequelizeJS?
Приведенный ниже код не работает:
var options = {
where: {
$or: [
{
subject: {
like: '%' + query + '%'
},
},
{
'Comment.body': {
like: '%' + query + '%'
},
}
]
},
include: [
{ model: Comment },
]
};
Ticket.findAll(options);
Это ошибка: «Возможно, необработанное SequelizeDatabaseError: колонка Ticket.Comment.body не существует»
Я также попытался код ниже, но он также не работает:
var options = {
where: {
CompanyId: req.company.id,
$or: [
{
subject: {
like: '%' + query + '%'
},
},
sequelize.cast(sequelize.col('comment.body'), 'TEXT', 'LIKE', '%' + query + '%')
]
},
include: [
{ model: Comment, as: 'comment', where: {} },
]
};
Ticket.findAll(options);
ошибка: «Возможно, необработанная ошибка: комментарий (комментарий) не связан с билетом»
И это одна:
var options = {
where: {
CompanyId: req.company.id,
$or: [
{
subject: {
like: '%' + query + '%'
},
},
sequelize.where(sequelize.col('Comments.body'), 'LIKE', '%' + query + '%')
]
},
include: [
{ model: Comment},
]
};
Ticket.findAll(options);
Ошибка: "Возможно, необработанное SequelizeDatabaseError: Отсутствующий FROM-п запись для таблицы "Комментарии""
Я использую SequelizeJS версии 2.0.4
Я видел эти связанные с этим вопросы в хранилище Sequelizejs на Github:
- https://github.com/sequelize/sequelize/issues/3261
- https://github.com/sequelize/sequelize/issues/3095
- https://github.com/sequelize/sequelize/issues/3527
Любой знает решение? Заранее спасибо!
Это невозможно без # 3095 - до тех пор, пока это не реализовано, sequelize думает, что все в 'where' находится на главной таблице –
Спасибо @JanAagaardMeier. Хм. нет ли альтернативного решения? Как сделать некоторые части кода выше как необработанные запросы? Или использование полного необработанного запроса - единственное решение? –
https://github.com/sequelize/sequelize/issues/3095#issuecomment-149277205 – igneosaur