我正在与Meteor建立一个投票系统,其中可以上调或下调项目。为了在以后更精确地对投票分数进行排序,每个项目都包含字段dailyScore
,monthlyScore
和alltimeScore
,这些字段在投票后会增加或减少。我还需要提一下,注册用户和未注册用户都可以每24小时投票一次(有两个"选民和#34; - 包含注册选民的用户ID和未注册选民的IP地址的阵列,以便跟踪选民并阻止他们每天投票超过一次。)
我现在面临的问题是找到一种可靠的重置方式
dailyScore
每个新的一天(让我们说在UTC-0)monthlyScore
每个新月(除了(1.)显然)
到目前为止我的想法:
lastUpdate
- 任何集合的日期。通过使用onConnection
- 回调,我可以检查服务器上的if(currentTime.getDate() != lastUpdate.getDate())
。如果true
,我可以开始执行1.-3的操作。从上面。onConnection
可能过于沉重"。是否有共同的模式或最佳实践?做周期性的数据库操作(比如每个固定的24小时或每天新的onConnection)应该是一个众所周知的问题。
答案 0 :(得分:1)
percolate:synced-cron包适用于此类预定作业。
请注意,SyncedCron可能无法在某些共享主机提供商处按预期工作,这些主机提供商在未收到请求时关闭应用实例(例如Heroku的免费dyno层或Meteor免费galaxy)。 / p>