【问题标题】:Mongoose - execute a function on a specific date in the documentMongoose - 在文档中的特定日期执行函数
【发布时间】:2019-04-16 11:54:05
【问题描述】:

我正在开发一个与加密货币相关的博彩游戏项目。我使用 mongodb 作为我的数据库,并使用 mongoose 来使用它。我收集了描述博彩游戏的文档。每个文档都有一个名为“expires”的字段,通常是在创建后 3 分钟。在此日期之后不应添加任何投注,并且应运行一个函数来结束游戏:进行所有相关计算以找到获胜者并将游戏进行状态设置为 false。数据库中只能有一个活着的游戏,我使用 live 字段的部分索引来实现这一点。我需要创建一种机制来在游戏到期时结束游戏,但我不知道这里最好的方法是什么。

到目前为止,我正在考虑以下解决方案: * 运行一个单独的节点实例,每 1-3 秒检查一次存活游戏及其到期日期。 * 安排在到期日期之后执行负责结束游戏的函数。

有没有更好的方法来解决这个问题?我的游戏设计是否合适,或者我是否在某个地方完全错误地实现了这个功能?将游戏对象存储在内存中并在结束后保存会是更好的设计吗?

【问题讨论】:

    标签: javascript mongodb express mongoose


    【解决方案1】:

    这是典型的job scheduler 问题,在银行中很常见,其中任何transaction 都必须在一个时间范围内完成,如果它没有在你最终将transaction 完成的时间内完成Database.的最后一个Atomic状态我建议你看一下node-cron,这是一个调度程序,它适用于看起来像这些的调度模式。

    '* * * * * *' - runs every second
    '*/5 * * * * *' - runs every 5 seconds
    '10,20,30 * * * * *' - run at 10th, 20th and 30th second of every minute
    '0 * * * * *' - runs every minute
    '0 0 * * * *' - runs every hour (at 0 minutes and 0 seconds)
    

    【讨论】:

    • 数据库最后的原子状态是什么意思?
    • @zabbir 原子状态意味着它将为 0 或 1(二进制)或在事务模型中,数据库将始终完全更新或任何部分更改将被丢弃\
    猜你喜欢
    • 1970-01-01
    • 2016-02-24
    • 2012-08-11
    • 2017-10-13
    • 2016-11-10
    • 2020-12-19
    • 2022-10-15
    • 1970-01-01
    相关资源
    最近更新 更多