【问题标题】:Periodical MongoDB operations with Meteor使用 Meteor 进行定期 MongoDB 操作
【发布时间】:2015-03-23 14:20:34
【问题描述】:

我正在使用 Meteor 构建一个投票系统,可以对项目进行投票或投票。为了稍后更精确地对投票分数进行排序,每个项目都包含字段dailyScoremonthlyScorealltimeScore,它们在投票后会递增或递减。我还需要提一下,注册用户和未注册用户都可以每 24 小时投票一次(有两个“选民”数组,其中包含已注册选民的用户 ID 和未注册选民的 IP 地址,以跟踪选民并阻止他们一天投票一次以上)。

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

  1. dailyScore 每个新的一天(比如说在 UTC-0)
  2. monthlyScore 每个新月(显然除了 (1.))
  3. 每天的两个选民数组(到与 (1.) 相同的时间点)


到目前为止我的想法:

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

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

【问题讨论】:

    标签: meteor


    【解决方案1】:

    percolate:synced-cron 包非常适合这种预定的作业。

    请注意,SyncedCron 可能无法在某些共享托管服务提供商上按预期工作,这些提供商会在未收到请求时关闭应用实例(例如 Heroku 的免费 dyno 层或 Meteor 免费银河)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-30
      • 2014-07-25
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多