使用Meteor定期进行MongoDB操作

时间:2015-03-21 14:20:33

标签: meteor

我正在与Meteor建立一个投票系统,其中可以上调或下调项目。为了在以后更精确地对投票分数进行排序,每个项目都包含字段dailyScoremonthlyScorealltimeScore,这些字段在投票后会增加或减少。我还需要提一下,注册用户和未注册用户都可以每24小时投票一次(有两个"选民和#34; - 包含注册选民的用户ID和未注册选民的IP地址的阵列,以便跟踪选民并阻止他们每天投票超过一次。)

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

  1. dailyScore每个新的一天(让我们说在UTC-0)
  2. monthlyScore每个新月(除了(1.)显然)
  3. 每日两个选民阵列(与(1。)相同的时间点)

  4. 到目前为止我的想法:

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

    是否有共同的模式或最佳实践?做周期性的数据库操作(比如每个固定的24小时或每天新的onConnection)应该是一个众所周知的问题。

1 个答案:

答案 0 :(得分:1)

percolate:synced-cron包适用于此类预定作业。

请注意,SyncedCron可能无法在某些共享主机提供商处按预期工作,这些主机提供商在未收到请求时关闭应用实例(例如Heroku的免费dyno层或Meteor免费galaxy)。 / p>