В настоящее время я работаю с Sails.js и, надеюсь, задам вам простой вопрос. В этом небольшом проекте я работаю с аукционами, которые заканчиваются в определенную дату.

Мой вопрос в том, как сделать так, чтобы «работа cron выглядела так», которая проверяет время окончания каждого аукциона.

Я пробовал следующий код:

var cronJob = require('cron').CronJob;
new cronJob('1 * * * * *', function(){
    console.log('You will see this message every second');
}, null, true, null);

Проблема в том, что когда на страницу аукциона заходят несколько пользователей, выполняется несколько cronjobs. Есть ли способ создать файл начальной загрузки в Sails.js после запуска сервера или что-то в этом роде?

0
ItsJohnB 17 Мар 2014 в 17:54
Почему бы вам просто не использовать crontab вместо того, чтобы сделать его частью Sails? Куда вы вставляете этот код?
 – 
Explosion Pills
17 Мар 2014 в 18:09

1 ответ

Лучший ответ

Конечно, есть: http://sailsjs.org/#!documentation/config.bootstrap . См. bootstrap.js в папке config.

Тем не менее, я не уверен, что использование crons является лучшим способом справиться с этим (потребляющим ресурсы и неэффективным), я бы попытался организовать код на основе событий.

1
bredikhin 17 Мар 2014 в 18:39
Ух ты, я пропустил это в документации. Нужно выпить еще кофе, ха-ха, спасибо! Но как я могу создать управляемое событие, потому что аукцион хранится в базе данных и доступен только для контроллера? Или я сейчас совершенно тупой?
 – 
ItsJohnB
17 Мар 2014 в 19:43
Ну, я имел в виду, что если вы можете загрузить список аукционов с датами окончания, вы можете просто настроить очередь событий, которые будут запускаться в определенное время, верно? И ваши слушатели сделают это, вам не нужно будет запускать cron каждую секунду для этого.
 – 
bredikhin
17 Мар 2014 в 19:53