Я новичок в Sequelize, и мне трудно это понять. Это мой необработанный запрос:
select * from routes r join transports t where origin like :origin and destination like :destination and convert(departure, date) like convert(:date, date) and r.transportId = t.id
Я хочу сделать это в Sequelize и просматривая документы, которые я пробовал:
const { Sequelize, Op } = require("sequelize");
Route.findAll({
where: {
destination,
origin,
Sequelize.where(Sequelize.fn('CONVERT', Sequelize.col('departure'), 'date'): {
[Op.like]: Sequelize.fn('CONVERT', date, 'date'))
}
},
include: [{
model: db.transport,
as: 'transport'
}]);
Но я получаю синтаксические ошибки.
Изменить:
Route.findAll({
where: {
destination,
origin,
Sequelize.where(Sequelize.fn('CONVERT', Sequelize.col('departure'), 'date'), {
[Op.like]: Sequelize.fn('CONVERT', date, 'date')
})
},
include: [{
model: db.transport,
as: 'transport'
}]
});
Я все еще получаю ту же синтаксическую ошибку:
Sequelize.where(Sequelize.fn('CONVERT', Sequelize.col('departure'), 'date'), {
^
SyntaxError: Unexpected token '.'
Изменить:
Route.findAll({
where: {
[Op.and]: [
{ destination, origin },
Sequelize.where(Sequelize.fn('CONVERT', Sequelize.col('departure'), 'date'), {
[Op.like]: Sequelize.fn('CONVERT', date, 'date')
})
]
},
include: [{
model: db.transport,
as: 'transport'
}]
});
Он удалил предыдущую синтаксическую ошибку. Теперь я получаю это:
SequelizeDatabaseError: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''date') LIKE CONVERT('2020-05-28 00:00:00', 'date'))' at line 1