Я пытаюсь использовать GraphQL (с Gatsby), извлекая данные из пользовательского API. API содержит данные, поступающие из CMS, а основным содержимым является массив объектов. Каждый объект в этом массиве является компонентом с полями, такими как текст заголовка, копия тела, изображения и т. Д.
В GraphQL я запрашиваю все страницы для каждого компонента и его подполей. GraphQL возвращает правильное количество компонентов для каждой страницы, но для каждого компонента возвращает все возможные компоненты и связанные подполя. Это означает, что я получаю много null
возвращенных объектов.
Вот мой запрос GraphQL: (contentBlock - это то, что мы называем компонентом в cms)
query Demo {
allPages {
Pages {
title
contentBlocksArray {
contentBlock {
introText{
body
}
}
}
}
}
}
Вот что возвращается:
"allPages": {
"Pages": [
{
"title": "Contact",
"contentBlocksArray": [
{
"contentBlock": {
"introText": {
"body": "Get in touch with us"
}
}
},
{
"contentBlock": {
"introText": null
}
},
{
"contentBlock": {
"introText": null
}
},
{
"contentBlock": {
"introText": null
}
}
]
},
Я пытался использовать директивы, например:
allPages {
Pages {
title
contentBlocksArray {
contentBlock {
introText @skip(if: false) {
body
}
}
}
}
}
}
Но это ничего не сделало. Однако, если я переключил его на @skip(if: true)
, результат был неожиданным. Он вернул все contentBlock
на странице в виде пустых объектов, даже если у introText
была копия тела. В идеале я хотел бы видеть объект introText
, только если body
не был null
.
Поскольку @skip(if:true)
пропустил все introText
, даже если его значение равно null
, я пришел к выводу, что GraphQL интерпретирует null == true
, но я уверен, что что-то упустил.