Можно ли получить fragTypes напрямую из схемы?
Документы для IntrospectionFragmentMatcher показывают, как их извлекать и сохранять в файле JSON - но, похоже, учитывается только клиентсо стороны и предполагает, что у вас есть работающий сервер.
Поскольку я использую тот же сервер, что и мой API-интерфейс GraphQL, а также для рендеринга приложения, это что-то вроде курицы и яйца.Я все еще мог бы сделать это, как говорят в документации, с дополнительным шагом сборки, но это по сути означало бы:
- Сборка из src
- Запуск сервера
- Запуск сценариячтобы извлечь типы фрагментов, запишите их в
.json
файл - Перезагрузите сервер
Мне кажется, что для этого должен быть более простой способ.
При рендеринге приложения я создаю новый клиент Apollo с SchemaLink
, поэтому у меня уже есть полностью подготовленная схема.
Сейчас у меня есть это:
import introspectionQueryResultData from './fragmentTypes.json'
const fragmentMatcher = new IntrospectionFragmentMatcher({
introspectionQueryResultData,
})
const render = ({ schema, context }) => async (req, res, next) => {
const client = new ApolloClient({
ssrMode: true,
link: new SchemaLink({ schema, context }),
cache: new InMemoryCache({
fragmentMatcher,
}),
})
// ...
Iвместо этого хотелось бы иметь возможность что-то вроде этого:
const render = ({ schema, context }) => async (req, res, next) => {
const client = new ApolloClient({
ssrMode: true,
link: new SchemaLink({ schema, context }),
cache: new InMemoryCache({
fragmentMatcher: fragmentMatcherFromSchema(schema)
}),
})
// ...
Возможно ли это?