让我们说我的类型如下:
type Person {
id: String!
name: String!
email: String
}
电子邮件字段可以为null
。从解析程序返回Person时,可以简单地不返回Person对象的电子邮件字段,例如:
{
id: '1056'
name: 'Bob Smith',
}
代替:
{
id: '1056'
name: 'Bob Smith',
email: null
}
答案 0 :(得分:1)
是,您可以从父字段的解析器返回的值中忽略该属性。
模式中的每个字段都有一个默认解析器,如果您自己未指定解析器,则该解析器将运行(假设解析器首先触发)。在您的示例中,如果我们省略了email
的解析器,则默认解析器将有效地执行以下操作:
email
对象)上查找名为Person
的属性换句话说,如果父值中不存在与字段名称相同的属性,则默认情况下该字段将始终解析为null。还值得指出的是GraphQL没有undefined
的概念,只有null
。在GraphQL.js中,未定义的值始终被强制为null
。
答案 1 :(得分:0)
在GraphQL中,您总是返回消费者应用程序(前端/查询)的要求。
因此,如果有人查询用户,例如:
query getUser {
user {
id
name
email
}
}
,如果电子邮件为空,则输出为:
{
id: '1056'
name: 'Bob Smith',
email: null
}
但是,如果您将消费者查询更改为仅询问id
和name
,那么它将不会返回电子邮件。
您不能定义仅在不为null时返回的解析器。