根据时间

时间:2017-03-26 05:23:38

标签: node.js mongodb mongoose scheduled-tasks

让我们说比如我正在制作一个游戏大厅,我希望有一个“房间”文件,其中包含一个打开/关闭状态(布尔值)。我想在我的数据库中存储这个大厅开放注册,直到比赛日前24小时。在比赛日前24小时,我会将数据库中的房间文件标记为已关闭以进行注册,并且不会在搜索等中将其显示给用户。

如何在比赛日前24小时更新mongo中的字段?我也希望该解决方案能够处理服务器重启。我通过node.js和mongoose连接到mongodb。

我在aws ebs上运行应用程序,而db将在另一项服务上运行。

1 个答案:

答案 0 :(得分:1)

上面回答的一个难点是你写的需要:“我也希望解决方案能够处理服务器重启。”到目前为止,你可以使用缓存处理状态而不必一直处理从集合中读取。另外我不清楚你是否根据一个字段参数关闭整个集合,或者关闭一个字段?从您提供的信息中不清楚。

但是,如果您已将Mongo正确安装为服务器上的服务,那么Mongo将在服务器重新启动时重新启动。 (没有提到您所使用的服务器类型。)

可能性#1: 在服务器重新启动时,NPM缓存将消失,因此您无法依赖它。你需要做的是创建一个字段或sep。收集,简单地说,你会在24小时前更新。你必须运行一个函数(cron job?)来关闭注册并在一个集合中放置一个字段,该集合将被设置为布尔(只是一个建议),如下所示:

{“allowsignups”:真/假的可能性}

我不使用Mongoose但它会在架构中处理上述内容。 Native也可以正确处理。

除非您使用的是Redis,否则由于服务器重新启动而保留它的缓存将无济于事。

可能性#2: 在磁盘上保留一个简单的JSON文件,其中包含允许或不允许的参数注册。有一个例程可以检查有人在线的时间,如果JSON文件的allowedsignups设置为false,则不允许或显示它。这是Node中的一个简单的fs,也可以在服务器重启后继续存在。它不涉及对数据库的任何读/写,也不会使数据库模式复杂化。您可以将JSON文件用于多个游戏和更多参数。

您的选择。

希望这有帮助。