Я зарегистрировал CacheModule
с определенными ttl
CacheModule.register({ ttl: 5 * 60 * 60 })
Я хочу иметь возможность динамически настраивать ttl
после запуска приложения.
Является ли это возможным?
Я зарегистрировал CacheModule
с определенными ttl
CacheModule.register({ ttl: 5 * 60 * 60 })
Я хочу иметь возможность динамически настраивать ttl
после запуска приложения.
Является ли это возможным?
Возможно, есть CacheManager
, экспортированный из @nestjs/common
, где он используется внутри CacheInterceptor
, небольшое исследование показывает, что просто передать аргументы в cache-manager
, где ttl
может быть функцией, но она оценивается перед передачей в store
(memory
является один из cache-manager
рассказа), то внутри него есть строчка:
var maxAge = (options.ttl || options.ttl === 0) ? options.ttl * 1000 : lruOpts.maxAge;
по этой строке вы можете предположить, что вы, вероятно, могли бы сделать что-то вроде:
const options = {
ttl: () =>({ valueOf: () => someVariable })
}
Потому что:
let c = { valueOf: () => 2 }
console.log(100*c);
Это только мои мысли, не пробовал.
С Уважением.
const someVar = 23; CacheModule.register({ ttl: () => ({ someVar })})
- person cojack; 29.01.2019
ttl
для каждого запроса в моих службах. Похоже, мне нужно использовать какую-то глобальную переменную? Как вы думаете, CacheModule.register
всегда принимает текущую переменную? У меня такое ощущение, что он инициализируется только один раз, поэтому ему все равно, что переменная была изменена с тех пор. Какие-нибудь мысли?
- person sreginogemoh; 30.01.2019
CacheModule.register
в конце здесь не играет, это всего лишь прокси-сервер для передачи аргументов в cache-manager
, поэтому зависит от того, что вы передадите, это будет оцениваться. Пример someVariable
— это только концепция, это может быть что угодно, например: import SomeObject from 'some/path'; const options = {ttl: () =›({ valueOf: () =› SomeObject }) }, где SomeObject реализует функцию valueOf
.
- person cojack; 30.01.2019
nest
, или вы можете получить контекст гнезда, а затем попытаться внедрить его туда. Существует множество решений, зависит от того, что подходит для вас.
- person cojack; 30.01.2019