Reactjs 如果字段为空,如何在graphql结果中显示NULL
我正在使用Strapi作为我在盖茨比的前端页面的cms 在Strapi中,我有一个内容类型Reactjs 如果字段为空,如何在graphql结果中显示NULL,reactjs,graphql,gatsby,strapi,Reactjs,Graphql,Gatsby,Strapi,我正在使用Strapi作为我在盖茨比的前端页面的cms 在Strapi中,我有一个内容类型页面。页面内容类型与所有其他内容类型存在多对多关系 因此,我有如下内容类型: query MyQuery { allStrapiPage { edges { node { footers { name } headers { name } } }
页面
。页面
内容类型与所有其他内容类型存在多对多关系
因此,我有如下内容类型:
query MyQuery {
allStrapiPage {
edges {
node {
footers {
name
}
headers {
name
}
}
}
}
}
{
"data": {
"allStrapiPage": {
"edges": [
{
"node": {
"footers": [
{
"name": "Footer ONE"
}
]
}
},
{
"node": {
"headers": [
{
"name": "Header one"
}
]
}
},
]
}
}
}
"Cannot query field \"footers\" on type \"StrapiPage\".
{
"data": {
"allStrapiPage": {
"edges": [
{
"node": {
"footers": null
}
},
{
"node": {
"headers": [
{
"name": "Header one"
}
]
}
},
]
}
}
}
- 页数
- 页脚
- 标题
query MyQuery {
allStrapiPage {
edges {
node {
footers {
name
}
headers {
name
}
}
}
}
}
{
"data": {
"allStrapiPage": {
"edges": [
{
"node": {
"footers": [
{
"name": "Footer ONE"
}
]
}
},
{
"node": {
"headers": [
{
"name": "Header one"
}
]
}
},
]
}
}
}
"Cannot query field \"footers\" on type \"StrapiPage\".
{
"data": {
"allStrapiPage": {
"edges": [
{
"node": {
"footers": null
}
},
{
"node": {
"headers": [
{
"name": "Header one"
}
]
}
},
]
}
}
}
我得到了我应该得到的所有结果
因此,结果如下:
query MyQuery {
allStrapiPage {
edges {
node {
footers {
name
}
headers {
name
}
}
}
}
}
{
"data": {
"allStrapiPage": {
"edges": [
{
"node": {
"footers": [
{
"name": "Footer ONE"
}
]
}
},
{
"node": {
"headers": [
{
"name": "Header one"
}
]
}
},
]
}
}
}
"Cannot query field \"footers\" on type \"StrapiPage\".
{
"data": {
"allStrapiPage": {
"edges": [
{
"node": {
"footers": null
}
},
{
"node": {
"headers": [
{
"name": "Header one"
}
]
}
},
]
}
}
}
但是,如果我在上述查询的页脚
或页眉
内容类型中没有任何记录,我会得到如下错误:
query MyQuery {
allStrapiPage {
edges {
node {
footers {
name
}
headers {
name
}
}
}
}
}
{
"data": {
"allStrapiPage": {
"edges": [
{
"node": {
"footers": [
{
"name": "Footer ONE"
}
]
}
},
{
"node": {
"headers": [
{
"name": "Header one"
}
]
}
},
]
}
}
}
"Cannot query field \"footers\" on type \"StrapiPage\".
{
"data": {
"allStrapiPage": {
"edges": [
{
"node": {
"footers": null
}
},
{
"node": {
"headers": [
{
"name": "Header one"
}
]
}
},
]
}
}
}
那不是我想要的。如何在不存在的字段上获取null?因此,如果footers
内容类型为空,我希望得到如下结果:
query MyQuery {
allStrapiPage {
edges {
node {
footers {
name
}
headers {
name
}
}
}
}
}
{
"data": {
"allStrapiPage": {
"edges": [
{
"node": {
"footers": [
{
"name": "Footer ONE"
}
]
}
},
{
"node": {
"headers": [
{
"name": "Header one"
}
]
}
},
]
}
}
}
"Cannot query field \"footers\" on type \"StrapiPage\".
{
"data": {
"allStrapiPage": {
"edges": [
{
"node": {
"footers": null
}
},
{
"node": {
"headers": [
{
"name": "Header one"
}
]
}
},
]
}
}
}
我该怎么做
提前谢谢。我刚加入,还不能对帖子发表评论,所以我会把这个放在回答部分。您是否检查过在模式中将页脚和页眉定义为可空字段?这可能会导致您的错误我没有使用strapi,但您是否可以控制strapi后端?@RakeshJain只能通过他们的管理面板。如果可能,您可以在API上为页脚创建解析器,在那里您可以检查数据是否存在,如果不返回null。此外,如果页脚返回null,则需要确保页脚在模式中不严格,否则也会出错。这不是一个解决方案,而是我在遇到类似问题时决定采用的“简单”解决方法(使用Contentful,而不是Strapi)。我为我拥有的每种内容类型定义了“placelholders”。所有这些占位符的所有属性都已填充。然后,当我从
gatsby节点
获取内容来创建页面时,我有一个条件来检查被迭代的项是否是这些占位符中的一个,如果是,它只是忽略它。