Mongoose - выполнить функцию на определенную дату в документе - PullRequest
0 голосов
/ 16 апреля 2019

Я работаю над проектом ставок на криптовалюту. Я использую mongodb в качестве базы данных и mongoose для работы с ней. У меня есть эта коллекция для документов, описывающих игры на ставки. У каждого документа есть поле с именем expires, которое обычно составляет 3 минуты после его создания. После этой даты нельзя добавлять ставки, а для завершения игры должна быть запущена функция: сделайте все соответствующие расчеты, чтобы найти победителя, и установите для статуса живой игры значение false. В базе данных может быть только одна живая игра, и я достигаю этого, используя частичный индекс для живого поля. Мне нужно создать механизм, который бы заканчивал игры по истечении срока их действия, и я понятия не имею, какой здесь лучший подход.

Пока я рассматриваю следующие решения: * Запустите отдельный экземпляр узла, который выполняет проверки живой игры и даты ее истечения каждые 1-3 секунды. * Запланируйте выполнение функции, которая отвечает за завершение игры сразу после даты истечения срока действия.

Есть ли лучшие подходы для решения этой проблемы? Соответствует ли мой игровой дизайн или я ошибся, реализовав эту функцию? Будет ли лучше сохранить игровой объект в памяти и сохранить его после окончания?

1 Ответ

0 голосов
/ 16 апреля 2019

Это классическая job scheduler проблема, очень распространенная в банках, где любое transaction должно быть завершено в течение определенного периода времени, если оно не будет выполнено в течение того времени, когда вы в конечном итоге наберете transaction до егоlast Atomic состояние Database. Я бы посоветовал вам взглянуть на 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...