【问题标题】:How to make Sequelize $between query?如何使 Sequelize $between 查询?
【发布时间】:2026-02-21 17:55:01
【问题描述】:

我在我的项目中使用 node.js 和 Sequelize ORM。我正在尝试获取阶段“待定”和日期在 2 到 10 之间的所有行(假日期)。这是我的查询:

const stain = await Gyn.findAll({
        where: {
            stage: `pending`,
            lastUpdate: {
                [Op.$between]: [startDate, endDate]
            }
        }
    });
console.log(stainQc)

我的表中只有 2 行。我看到一个匹配我的查询,但我的代码中的console.log(stain) 显示有空数组。但它必须是一个项目。我做错了什么?

更新: 当我删除

lastUpdate: {
         [Op.$between]: [startDate, endDate]
}

它通过“待定”找到我的行。

【问题讨论】:

  • 查看日志并检查 sequelize 正在生成什么查询
  • WHERE gyn.stage = '待定' AND gyn.lastUpdate = '[object Object]'; - 显然 '[object Object]' - 不对!
  • 似乎startDateendDate 实际上不是date 类型的对象。还有一件事,你为什么在操作符之前使用$。不应该是[Op.between]吗?
  • 是的,你是对的,$ 是一个错误!谢谢。你可以写一个答案,我会接受的。

标签: javascript mysql node.js sequelize.js


【解决方案1】:

正如 cmets 中提到的,这只是一个错字。去掉运算符前的$

lastUpdate: {
    [Op.between]: [startDate, endDate]
}

Sequelize official docs reference

【讨论】: