我对如何使用Sequelize处理嵌套的WHERE感到困惑。文档中并没有这样的例子。我有一个查询,看起来像这样:
SELECT * FROM Users WHERE likes <= $likeVariable AND ( likes < $likeVariable OR id < $idVariable ) ORDER BY likes DESC, id DESC
我需要这个查询在非惟一属性likes上进行基于指针的分页,这就是为什么我需要id属性suggested here的原因
如何将其转换为我的Sequelize查询?
var users = await Users.findAndCountAll({
where: ????, <- How do I do the WHERE clause?
order: [['likes', 'DESC'], ['id', 'DESC']]
});发布于 2019-10-05 10:49:09
尝尝这个
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']]
});发布于 2019-10-05 11:29:23
我相信我已经弄明白了,精神上的障碍是发现[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;感谢Jiml让我走上了正确的道路!
https://stackoverflow.com/questions/58244841
复制相似问题