You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用NodeJS和Sequelize通过日期对比删除数据库过期数据

Sequelize 定时删除过期记录正确实现

Sequelize 不支持直接在查询条件对象中使用 </> 等原生JS比较运算符,需要通过内置的操作符对象 Op 实现范围查询,完整实现步骤如下:

  • 首先从 sequelize 依赖中导入操作符对象 Op
const { Op } = require('sequelize');
  • 修改定时任务逻辑,为异步回调添加异常捕获,正确编写删除条件:
// 每小时整点执行定时任务
cron.schedule('0 0 */1 * * *', async () => {
  try {
    await CodePassword.destroy({
      where: {
        // Op.lt 对应小于运算符,满足 过期日期 < 当前时间 条件
        expiration_date: { [Op.lt]: new Date() }
      }
    });
  } catch (error) {
    // 自定义错误处理逻辑,例如打印日志
    console.error('删除过期记录失败:', error);
  }
});

如果业务仅需按日期判断是否过期,无需精确到时分秒,可将当前时间调整为当日0点再传入条件:

const todayStart = new Date();
todayStart.setHours(0, 0, 0, 0);
// 条件改为 [Op.lt]: todayStart 即可

内容的提问来源于stack exchange,提问作者Gonsa02

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:57:01