我对如何使用Sequelize处理嵌套的WHERE
感到困惑。该文档实际上没有这样的示例。我有一个查询,看起来像这样:
SELECT * FROM Users WHERE likes <= $likeVariable AND ( likes < $likeVariable OR id < $idVariable ) ORDER BY likes DESC, id DESC
我需要此查询来对基于非唯一属性likes
的基于光标的分页,这就是为什么我需要建议的id
属性为建议的here
如何将其转换为我的Sequelize查询?
var users = await Users.findAndCountAll({
where: ????, <- How do I do the WHERE clause?
order: [['likes', 'DESC'], ['id', 'DESC']]
});
[我相信我已经知道了,心理障碍发现不必在属性中使用[Op.or]
:
where: {
likes: {
[Op.lte]: $likeVariable
},
[Op.or]: [
{
likes: {
[Op.lt]: $likeVariable
}
},
{
id: {
[Op.lt]: $idVariable
}
}
]
}
结果,我的终端打印出了Sequelize生成的以下SQL查询:
SELECT * FROM `Users` AS `User`
WHERE (`User`.`likes` < 6 OR `User`.`id` < 85)
AND `User`.`likes` <= 6
ORDER BY `User`.`hypes` DESC, `User`.`id` DESC;
感谢吉姆让我走上正确的路!
尝试一下
var users = await Users.findAll({
where: {
likes: {
[Op.lte]: $likeVariable,
[Op.and]: {
[Op.or]: [
{likes: { [Op.lt]: $likeVariable} },
{ id: { [Op.lt]: $idVariable } }
]
},
}
},
order: [['likes', 'DESC'], ['id', 'DESC']]
});