У меня есть некоторая информация, уникальная для каждого пользователя, эта информация не часто меняется, поэтому я настроил cronjob, используя node-cron
для обновления значения один раз в день.
Мой вопрос: где можноЯ сохраняю это значение?
Я пытался app.locals
, но из того, что я вижу, он действует как глобальная переменная для всего приложения, то есть все пользователи имеют одинаковое значение в этой переменной.
Я также попытался использовать res.locals
, который отлично работает, но только для первой загрузки страницы, где он и устанавливается.После этого, когда я перезагружаю страницу, переменная не определена, потому что она устанавливается только один раз.
Способ, которым я делаю это: в моем коде есть промежуточное ПО, которое проверяет, был ли запланирован cronjob.Если нет, то он планирует cronjob, а также запускает код один раз, чтобы получить значение, а затем устанавливает его в res.locals, поэтому он работает при первой загрузке.Когда я перезагружаюсь, это промежуточное ПО может видеть, что переменная уже была установлена ранее, поэтому оно переходит прямо к следующему промежуточному ПО или маршруту, используя функцию next()
.
Способ, которым я проверяю, установлен ли в данный момент cronjob,также неправильно из-за той же проблемы.Прямо сейчас у меня есть глобальная переменная cronSchedule
, которая является логическим значением.Проблема в том, что это переменная области приложения, поэтому, когда первый пользователь загружает страницу, для переменной устанавливается значение true, чтобы cronjob не выполнялся для других пользователей.
Мое промежуточное ПО
app.use( function( req, res, next ) {
if (!cronScheduled) {
// schedule tasks to be run on the server
cron.schedule('0 0 * * *', function() {
functionToGetData();
});
functionToGetData();
} else {
next();
}
} );