graphql中架构类型中两个字段之间的依赖关系

graphql中架构类型中两个字段之间的依赖关系,graphql,Graphql,我正在寻找一种方法来描述对象类型字段之间的chema级依赖关系 例如: type foo{ obj1: MyOBJ1 obj2: MyOBJ2 } 在后端数据中,只能对obj1或obj2进行消隐,而另一个必须为空。它们不能一起填充或一起为空。 我最好的方法是什么? 感谢类型始终特定于单个字段。默认情况下,字段可以为空,也可以为非空。这就是GraphQL验证输出是否为空的范围。除此之外的任何验证都必须在解析器级别进行 也就是说,使用联

我正在寻找一种方法来描述对象类型字段之间的chema级依赖关系 例如:

    type foo{    
       obj1: MyOBJ1    
       obj2: MyOBJ2 
    }
在后端数据中,只能对obj1或obj2进行消隐,而另一个必须为空。它们不能一起填充或一起为空。 我最好的方法是什么?
感谢

类型始终特定于单个字段。默认情况下,字段可以为空,也可以为非空。这就是GraphQL验证输出是否为空的范围。除此之外的任何验证都必须在解析器级别进行

也就是说,使用联合或接口可以实现类似的效果

type Query {
  foo: Foo
}
type Foo1 {    
  obj1: MyObj1!
}
type Foo2 {
  obj2: MyObj2! 
}
union Foo = Foo1 | Foo2
将每个字段设置为非null可确保给定类型的字段不能为null。在运行时,类型为
Foo
的字段将始终解析为两种具体类型之一(
Foo1
Foo2
)。因此,如果我们查询
foo
字段,我们将得到

{
  "foo": {
    "obj1": {...}
  }
}


请注意,在这种情况下,
obj1
obj2
在响应中将为空,而是在响应中完全不包含它。

@user1061835有关更多详细信息,请参阅我的编辑
{
  "foo": {
    "obj2": {...}
  }
}