如果字段为空,如何在graphql结果中显示NULL
Posted
技术标签:
【中文标题】如果字段为空,如何在graphql结果中显示NULL【英文标题】:How to show NULL in graphql result if the field is empty 【发布时间】:2020-04-13 00:17:44 【问题描述】:我在 Gatsby 中使用 Strapi 作为我的前端页面的 cms。
在 Strapi 中,我有一个内容类型 Pages
。 Pages
内容类型与所有其他内容类型存在多对多关系。
因此我的内容类型如下:
页数 页脚 标题查询如下:
query MyQuery
allStrapiPage
edges
node
footers
name
headers
name
我得到了我应该得到的所有结果。
因此,结果如下:
"data":
"allStrapiPage":
"edges": [
"node":
"footers": [
"name": "Footer ONE"
]
,
"node":
"headers": [
"name": "Header one"
]
,
]
但是,如果我在上述查询的 footers
或 headers
内容类型中没有任何记录,则会收到如下错误:
"Cannot query field \"footers\" on type \"StrapiPage\".
这不是我想要的。如何在不存在的字段上获取 null?因此,如果footers
内容类型为空,我希望结果如下:
"data":
"allStrapiPage":
"edges": [
"node":
"footers": null
,
"node":
"headers": [
"name": "Header one"
]
,
]
我该怎么做?
提前致谢。
【问题讨论】:
我没用过strapi,但是你能控制strapi后端吗? @RakeshJain 仅通过他们的管理面板。 如果可能的话,您可以在 API 上为页脚创建解析器,您可以在其中检查数据是否存在,如果不存在则返回 null。此外,如果您为页脚返回 null,您需要确保页脚在架构中不严格,否则也会出错。 这不是一个解决方案,而是一个“简单”的解决方法,我在遇到类似问题时决定采用(使用 Contentful,而不是 Strapi)。我为我拥有的每种内容类型定义了“占位符”。所有这些占位符都是用填充的所有属性定义的。然后,当我从gatsby-node
获取内容来创建页面时,我有一个条件来检查被迭代的项目是否是这些占位符之一,如果是,它只是忽略它。
【参考方案1】:
我刚加入,还不能评论帖子,所以我会把它放在答案部分。您是否检查过您在架构中将页脚和页眉定义为可空字段?这可能会导致您的错误
【讨论】:
以上是关于如果字段为空,如何在graphql结果中显示NULL的主要内容,如果未能解决你的问题,请参考以下文章