Кэширование с Node Cache не сохраняет данные - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь построить кэш с использованием модуля 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...