在 sequelize 中使用 where 子句或条件
Use where clause with or condition in sequelize
我正在尝试在 sequelize 中使用或条件来表示查询,例如,
SELECT * FROM table WHERE title = "title" OR genre = "genre"
然而,这是我已经尝试过的
const checkTitle= await User.findOne({
where: {
$or: [
{ title: req.body.title },
{ genre: req.body.genre }
]
}
}).catch((err) => console.log(err.message));
但它一直给我一个错误,提示无效值
Invalid value { title: 'title' }
请问如何在sequelize中正确使用OR条件?
您需要在代码中将大括号放在标题和流派之后。
代码应该是这样的:
const checkTitle= await User.findOne({
where: {
$or: [
title: {req.body.title },
genre: {req.body.genre }
]
}
}).catch((err) => console.log(err.message));
sequelize最新版本修改了逻辑运算的语法。对于
续集 >= 4.12
const checkTitle= await User.findOne({
where: {
[Op.or]: [
title: {req.body.title },
description: {req.body.genre }
]
}
}).catch((err) => console.log(err.message));
我正在尝试在 sequelize 中使用或条件来表示查询,例如,
SELECT * FROM table WHERE title = "title" OR genre = "genre"
然而,这是我已经尝试过的
const checkTitle= await User.findOne({
where: {
$or: [
{ title: req.body.title },
{ genre: req.body.genre }
]
}
}).catch((err) => console.log(err.message));
但它一直给我一个错误,提示无效值
Invalid value { title: 'title' }
请问如何在sequelize中正确使用OR条件?
您需要在代码中将大括号放在标题和流派之后。 代码应该是这样的:
const checkTitle= await User.findOne({
where: {
$or: [
title: {req.body.title },
genre: {req.body.genre }
]
}
}).catch((err) => console.log(err.message));
sequelize最新版本修改了逻辑运算的语法。对于
续集 >= 4.12
const checkTitle= await User.findOne({
where: {
[Op.or]: [
title: {req.body.title },
description: {req.body.genre }
]
}
}).catch((err) => console.log(err.message));