Как реализовать кэширование на apollo-server-hapi graphql - PullRequest
0 голосов
/ 22 октября 2018

у меня есть graphql с apollo-server-hapi.я пытаюсь добавить элемент управления кэшем, как показано ниже:

const graphqlOptions = {
  schema,
  tracing: true,
  cacheControl: true,
};

, но когда я пытаюсь добавить параметр кэша на основе схемы:

type Author @cacheControl(maxAge: 60) {
  id: Int
  firstName: String
  lastName: String
  posts: [Post]
}

, я получаю это сообщение об ошибке:

Error: Unknown directive "cacheControl".

Можете ли вы помочь, как правильно применить кэш-контроль к схеме?

Я следую инструкциям ниже, но, похоже, это не сработало.

apollo-cache-контроль

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Я также был apollo-server-lambda, и основная проблема связана с использованием makeExecutableSchema docs упоминается, что это вызвано сшивкой схемы.

К сожалению, если вы используете что-то вроде graphql-middleware , другого пути нет, за исключением того, что упоминает индус.Также убедитесь, что вы находитесь на сервере apollo> 2.6.6.

0 голосов
/ 22 октября 2018

После того, как вы узнали больше о кешировании в apollo graphql, в основном проблема была с makeExecutableSchema из apollo-server-hapi, не включающей директиву для @cacheControl, поэтому, чтобы она работала, нам просто нужно определить нашу собственную *Директива 1004 * в файл graphql, как показано ниже:

enum CacheControlScope {
  PUBLIC
  PRIVATE
}

directive @cacheControl (
  maxAge: Int
  scope: CacheControlScope
) on FIELD_DEFINITION | OBJECT | INTERFACE

type Author @cacheControl(maxAge: 60) {
  id: Int
  firstName: String
  lastName: String
  posts: [Post]
}
...