Как реализовать пользовательский Apollo Server KeyValueCache? - PullRequest
1 голос
/ 01 апреля 2020

Я ищу рабочий пример кэширования сервера Apollo с использованием пользовательской реализации KeyValueCache - https://www.npmjs.com/package/apollo-server-caching

Это фрагмент того, с чем я сейчас работаю.

export default class MyCache implements KeyValueCache {
  cachedInfo: [];

  async set(key: string, value: string, options?: KeyValueCacheSetOptions): Promise<void> {
    this.cachedInfo[key] = value;
  }

  async get(key: string): Promise<string | undefined> {
    if (this.cachedInfo[key]) return this.cachedInfo[key];
  }

  async delete(key: string): Promise<boolean> {
    this.cachedInfo[key] = null;
    return this.cachedInfo[key] === null;
  }
}

Пока что каждый запрос выдает ошибку ...

 "message": "Cannot read property 'fqc:1e5108601dcce15b1e80befed8f799d75322c573a873d274ec466adc4bd52f59' of undefined"

cachedInfo пусто, поэтому ничего не будет возвращено. Я не знаю, что мне не хватает.

Любая помощь приветствуется.

1 Ответ

1 голос
/ 22 апреля 2020

Свойство cachedInfo не имеет инициализатора и не определено в конструкторе.

Изменение cachedInfo: [] на cachedInfo = {}; решит проблему.

Рабочий пример: https://github.com/mrdulin/apollo-graphql-tutorial/tree/master/src/stackoverflow/60977550

...