Sequelize where-clause operator 不产生预期的输出

Sequelize where-clause operator not producing expected output

我正在使用 Sequelize 为在 NodeJS 中构建的应用构建密码重置功能。

当用户输入新密码并提交时,我正在查询数据库以使用以下代码查找用户:

const user = await User.findAll({ where:
        {
            resetPasswordToken: req.params.token,
            resetPasswordExpires: { $gt: Date.now() }
        }
    });

但是,此条目生成的查询如下(从终端复制,我为不相关的元素添加了“...”):

Executing (default): SELECT ... `resetPasswordToken`, `resetPasswordExpires` FROM `users` AS `user` WHERE `user`.`resetPasswordToken` = ... AND `user`.`resetPasswordExpires` = '2020-08-09 04:00:00';

这个查询 运行 时的当前日期时间是:'2020-08-09 14:24:40',这让我很困惑为什么这个续集查询被翻译成 "= '2020-08- 09 04:00:00'".

结果是查询没有匹配任何用户,即使它应该匹配一个用户。

我的问题如下:

  1. 我查询的语法是否正确?它应该搜索大于现在的日期时间。
  2. 如果它是正确的,是否还有其他我遗漏的东西会阻止查询工作?

感谢您的帮助!

-彼得

不幸的是,较新版本的 sequelize 不再支持运算符别名 ($gt)。使用 [Op.gt] 而不是 $gt

尝试:

const user = await User.findAll({ where:
        {
            resetPasswordToken: req.params.token,
            resetPasswordExpires: { [Op.gt]: Date.now() }
        }
    });

https://sequelize.org/master/manual/model-querying-basics.html#operators