【发布时间】:2015-03-23 14:20:34
【问题描述】:
我正在使用 Meteor 构建一个投票系统,可以对项目进行投票或投票。为了稍后更精确地对投票分数进行排序,每个项目都包含字段dailyScore、monthlyScore 和alltimeScore,它们在投票后会递增或递减。我还需要提一下,注册用户和未注册用户都可以每 24 小时投票一次(有两个“选民”数组,其中包含已注册选民的用户 ID 和未注册选民的 IP 地址,以跟踪选民并阻止他们一天投票一次以上)。
我现在面临的问题是找到一种可靠重置的方法
-
dailyScore每个新的一天(比如说在 UTC-0) -
monthlyScore每个新月(显然除了 (1.)) - 每天的两个选民数组(到与 (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