时间自动过期,除了用数据库提供的事件,触发器等解决,也可以用node-schedule,那什么是node-schedule?
Node Schedule 是一个Node.js的灵活的类似cron又不类似的任务调度库.它允许你调度任务(任意函数)在特殊的日期执行,并循环执行。他只在在任何给定的时间里使用一个定时器(而不是每隔一秒/一分钟来重新判断将要执行的任务)
注意 Node Schedule 是被设计来进行进程内调度,也就是说调度任务只能在你的脚本运行时才能有效以及调度将在执行成功后消失。如果你需要在你脚步 不 运行的时候调度任务,那就需要考虑使用cron.
npm install node-schedule
cnpm install node-schedule
const schedule = require('node-schedule');
let checkoverdue= require('checkoverdue');
const scheduleFun = () => {
schedule.scheduleJob('* * * * * *', async () => {//每秒执行
await checkoverdue(); //检查时间是否过期
});
};
exports.scheduleCronstyle = scheduleFun;
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ 一周的星期 (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── 月份 (1 - 12)
│ │ │ └────────── 月份中的日子 (1 - 31)
│ │ └─────────────── 小时 (0 - 23)
│ └──────────────────── 分钟 (0 - 59)
└───────────────────────── 秒 (0 - 59, OPTIONAL)
时间过期可以修改时间数据库状态,或者将其删除,这里用到的是把时间转化为时间戳比较。
let nowtime = new Date().getTime();//当前时间戳
let mychecktime;//需要检查的时间
let check = new Date(mychecktime).getTime();
if (nowtime > check) {
//修改数据库相关状态
}
exports.checkoverdue=checkoverdue
可以使用 cancel() 终止一个运行中的任务。
schedule .cancel();