У меня есть Craft CMS без головы, которая возвращает данные в мое приложение Nuxtjs через конечную точку GraphQL через Apollo. У меня есть поле, которое может возвращать один из трех разных типов блоков: richText
, image
и pullQuote
.
Моя конечная точка GraphQL выглядит так:
query($section:[String], $slug:[String]) {
entries(section: $section, slug: $slug) {
id,
title,
uri,
... on blog_blog_Entry{
contentEngine{
__typename,
...on contentEngine_richText_BlockType{
__typename,
id,
richText
fontColor,
backgroundColor
}
...on contentEngine_image_BlockType{
__typename,
id,
backgroundColor,
imageWidth,
image {
id,
url
}
}
...on contentEngine_pullQuote_BlockType{
__typename,
id,
backgroundColor,
fontColor,
quote
}
}
}
}
}
Он отлично возвращает данные, но я получаю эту ошибку при попытке использовать его в своем компоненте Nuxt:
Вы используете простой (эвристический) сопоставитель фрагментов, но ваши запросы содержат типы объединения или интерфейса. Клиент Apollo не сможет точно отображать фрагменты. Чтобы устранить эту ошибку, используйте
IntrospectionFragmentMatcher
, как описано в документации: https://www.apollographql.com/docs/react/advanced/fragments.html#fragment-matcher
Раздражает то, что эта документация приводит к ошибке 404. Я нашел несколько другие билеты GitHub, которые ссылаются на эту ссылку, поэтому я не уверен, какие шаги мне следует предпринять.
Я думаю, что мне нужно научить кэш памяти Apollo. Поскольку мой ответ не такой уж сложный, я думаю, что смогу обойтись без Определение возможных типов вручную.
Я пробовал следующее, но не думаю, что понимаю, как это правильно настроить:
const cache = new InMemoryCache({
possibleTypes: {
contentEngine: [
"contentEngine_richText_BlockType",
"contentEngine_pullQuote_BlockType",
"contentEngine_image_BlockType"
],
},
});
Любая помощь в решении этой проблемы будет огромным подспорьем.
ВНИМАНИЕ: происходит эвристическое сопоставление фрагментов!