我正在实施预订系统,我需要记录接受工作和工作开始之间的时间概念,然后记录工作的持续时间。我需要在达到工作的开始时间时从“状态A”移动到“状态B”,然后在达到工作结束时从“状态B”移动到“状态C”。
我知道我可以使用像Bull或Bee-Queue这样的队列系统来实现它,但这似乎是错误的,因为我只需要改变我的工作的“状态”,而不是执行任何后台处理。
我怎样才能简单地说“在下午3点,将此任务更改为'状态B',并在下午5点将此任务更改为'状态C'”。
我可以每分钟查看一下我的数据库吗?这是'正确'的方法吗?
答案 0 :(得分:2)
如何使用node-cron模块?您可以使用node-cron根据时间,频率等安排作业。有关更多示例,请参阅官方链接 https://www.npmjs.com/package/node-cron
我粘贴了一个以供参考
var cron = require('node-cron');
cron.schedule('* * * * *', function(){
console.log('running a task every minute');
});
答案 1 :(得分:0)
不涉及调度的方法是在请求时计算state
属性的值。
不是在下午3点更新state
的值,而是检查有人请求预订资源的当前时间。如果它是< 3pm<< 5pm,则返回state
作为'状态B'。如果> 5 pm,请将state
作为'状态C'返回。
答案 2 :(得分:0)
您可以使用setTimeout(function, timeout)
在特定时间段安排任务。
var now = new Date(); //creates date object at current time
var date = new Date(...); //create first state-changing time
//Execute task after (date - now) milliseconds
setTimeout(function(){
//execute tasks
}, date - now);
现在你可以在循环的帮助下在setTimeout()里面做setTimeout()来完成你的任务!