javascript - 如何处理 Sequelize 嵌套/复合查询?

标签 javascript sql sequelize.js

我很困惑如何处理嵌套 WHERE正在使用 Sequelize。该文档实际上没有这方面的示例。我有一个如下所示的查询:

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;

感谢 Jiml 让我走上正轨!

关于javascript - 如何处理 Sequelize 嵌套/复合查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58244841/

相关文章:

sql - 如何从SQL Server发送邮件?

sql - 带有字母范围的 PATINDEX 排除变音符号(重音字符)

javascript - 如何使用 $.grep() 应用多个过滤器

sql - Oracle SQL 查询大于日期语句获取值

javascript - 通过 Ajax 发送 HTML 表单并使用 PHP 处理

sequelize.js - 表 'db.Sessions' 不存在

node.js - 尝试从 Node 应用程序连接时出现 PostgreSQL 错误

node.js - 使用变量时的 Sequelize 问题

javascript - jQuery selected(chzn) 更新选项

javascript - 等待带有 setTimeout 的函数完成而不篡改该函数