Я пытаюсь построить кэш с использованием модуля node-cache npm, где я хочу сохранить первые 100 записей вызова API в кэше, поэтому мне не нужно повторно вызывать API. Внешний интерфейс - это сборка с React.
У меня проблема в том, что при каждом обновлении браузера я теряю кеш. Мой код выглядит следующим образом:
getAll: () => {
if (cache.keys().length) {
console.log(' data persists', )
const keysArr = cache.keys();
return getAllCachedRecords(keysArr)
}
cache.mset([{key: 1, val: {a: 1, b: 2}}, {key: 2, val: {a: 1, b: 2}}, {key: 3, val: {a: 1, b: 2}}])
console.log(cache.keys(), 'here i can see the saved data outside if statement')
return fetchRequest(BASE_URL)
}
const fetchRequest = (url) => {
return fetch(url)
.then(res => res.status <= 400 ? res : Promise.reject(res))
.then(res => res.json())
.then(res=>{
setAllCachedRecords(res);
return res;
})
.catch((err) => {
console.log(`${err.message} while fetching /${url}`)
});
};
По сути, я хочу, чтобы моя функция getAll сначала проверила, есть ли что-то в кэше (cache.keys возвращает массив существующих ключей), и если да, верните эта информация В противном случае вызовите API, установите информацию в кеше и верните эту информацию.
Однако значение cache.keys (). Length никогда не имеет значения true, даже если я вручную установил пару ключей вне условного оператора и впоследствии проверил их существование. Сбрасываю ли я данные, когда обновляю браузер sh, и если да, то какие решения мне не нужны, чтобы каждый раз вызывать API?