我有一个Node / Express / Sequelize项目。
使用文档中的以下示例,该示例将失败并在MySQL上引发SQL错误
Image.findAll({
where: {
image_title: {
[Op.like]: { [Op.any]: ['cat', 'hat']}
}
}
})
上面的查询在Node / Express中生成以下SQL:
`Executing (default): SELECT `id`, `story_title`, `image_title`,
`original_filename`, `created_at` AS `createdAt`, `updated_at`
AS `updatedAt` FROM `image`
AS `image`
WHERE `image`.`image_title` LIKE ANY ('cat', 'hat');`
我希望获得一张图像列表,其中image_title包含“ cat”或“ hat”
相反,我在Chrome中收到一个控制台错误,内容为:
“您的SQL语法有误;请查看 对应于您的MySQL服务器版本的正确语法 在第1行的'('cat','hat')'附近使用
没有图像。
我要做的是将字符串数组传递到查询中,并返回所有图像,其中image_title包含该数组中的任何字符串。
该文档中的示例似乎正是我想要的,但是使用所记录的语法,即使是静态字符串,我也无法使用它。
这是否有错误,是我误解了它的工作原理,还是有另一种方法可以实现此目的?
答案 0 :(得分:1)
目前可能的解决方法可能是使用RegEx
let words = ['cat','hat'];
Image.findAll({
where: {
image_title: {
[Op.regexp]: `*(${words.join('|')})*`
}
}
})