定期使用Meteor进行MongoDB操作



我正在用Meteor构建一个投票系统,可以对项目进行上下投票。为了以后更精确地对投票分数进行排序,每个项目都包含字段dailyScoremonthlyScorealltimeScore,这些字段在投票后递增或递减。我还需要提到的是,注册和未注册用户都可以每24小时投票一次(有两个"选民"阵列,包含注册选民的userId和未注册选民的IP地址,以跟踪选民并防止他们每天投票不止一次)。

我现在面临的问题是找到一种可靠地重置的方法

  1. 新的一天的dailyScore(比如在UTC-0)
  2. 每个新月份的CCD_ 5(显然除了(1.))
  3. 两个投票者每天排列(与(1)相同的时间点)


到目前为止我的想法:

  • 我可以存储一个服务器端全局变量,它总是包含任何集合的lastUpdate日期。通过使用onConnection-回调,我可以在服务器上检查if(currentTime.getDate() != lastUpdate.getDate())。如果true,我可以开始执行1-3的操作。从上面看
  • 使用onConnection可能"太重"
  • 某种cronjob是否可以执行1.3。UTC-0每24小时
  • 我认为onLogin挂钩是不够的,因为未注册的用户也可以投票

这方面有没有共同的模式或最佳实践?定期执行数据库操作(如每固定24小时或在新的一天执行新的onConnection)应该是一个众所周知的问题。

filtere:synchronized cron包对于这种计划作业非常有效。

请注意,SyncedCron可能不会像预期的那样在某些共享托管提供商上工作,这些提供商在没有收到请求时关闭应用程序实例(如Heroku的免费dyno层或Meteor免费galaxy)。

最新更新