有没有办法避免在 Apollo GraphQL 中返回具有空值的键?
Posted
技术标签:
【中文标题】有没有办法避免在 Apollo GraphQL 中返回具有空值的键?【英文标题】:Is there a way to avoid returing keys with null values in Apollo GraphQL? 【发布时间】:2021-01-31 09:07:49 【问题描述】:我在一个类型中有一个可以为空的属性:
type Person
job: String
还有一个查询:
query Persons()
persons()
job
无论我查询对象,我总是得到job
键,可以是字符串或空值。
"job": null
但我需要的是 job
键仅在定义作业时出现在结果中,否则我希望完全跳过它。
我尝试返回null
、undefined
并从数据中跳过密钥,但无论如何 Apollo 总是返回密钥。
【问题讨论】:
【参考方案1】:之后删除字段要容易得多:
if (result.job === null)
delete result.job;
要使用 graphql 获得相同的结果,您必须将 Person
拆分为两种类型:PersonWithJob
和 PersonWithoutJob
。从persons
查询返回一个联合并将您的查询更改为:
query Persons()
persons()
... on PersonWithJob
job
【讨论】:
我知道之后删除它会更容易,但是我有通用代码,它只是应该将 JSON 传递给需要密钥不存在或带有数据的外部系统。我只是不想在该代码中针对该特定情况进行任何特殊处理。以上是关于有没有办法避免在 Apollo GraphQL 中返回具有空值的键?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用 @apollo/react-hooks 访问多个 graphql 突变的选项
Apollo GraphQL,有没有办法在查询期间操作正在写入缓存的数据?