GraphQL:获取特定实现的子级
我得到了一个带有“children”字段的GraphQL对象。 该字段的类型为“X”,有两种不同的实现,“Y”和“Z” 因此,当我进行查询时,我可以这样做:GraphQL:获取特定实现的子级,graphql,Graphql,我得到了一个带有“children”字段的GraphQL对象。 该字段的类型为“X”,有两种不同的实现,“Y”和“Z” 因此,当我进行查询时,我可以这样做: { fieldOne fieldTwo children { ... on Y { fieldOne fieldTwo } ... on Z { fieldOne } } }
{
fieldOne
fieldTwo
children {
... on Y {
fieldOne
fieldTwo
}
... on Z {
fieldOne
}
}
}
我有没有办法只让孩子们使用Y实现?
因为如果我这样做:
{
fieldOne
fieldTwo
children {
... on Y {
fieldOne
fieldTwo
}
}
}
我将得到一个如下所示的对象:
{
fieldOne
fieldTwo
children [
{}, // Z implementation
{}, // Z implementation
{
fieldOne,
fieldTwo
}, // Y implementation
]
}
谢谢:)您看到的是预期行为。从: 片段可以在选择集中内联定义。这样做是为了根据字段的运行时类型有条件地包括字段 键入条件,如
。。。在Y上
只是一种根据运行时类型过滤解析哪些字段的方法。它们不是筛选实际结果列表的方法。事实上,GraphQL中没有内置的过滤功能
为了过滤列表以仅包含某些类型(或基于任何其他条件),相关字段需要具有某种过滤参数和解析器逻辑,以使用它实际执行过滤
如果您使用的是第三方API,并且模式不支持过滤,那么作为客户机,除了事后处理响应之外,您没有什么可以做的。您看到的是预期的行为。从: 片段可以在选择集中内联定义。这样做是为了根据字段的运行时类型有条件地包括字段 键入条件,如
。。。在Y上
只是一种根据运行时类型过滤解析哪些字段的方法。它们不是筛选实际结果列表的方法。事实上,GraphQL中没有内置的过滤功能
为了过滤列表以仅包含某些类型(或基于任何其他条件),相关字段需要具有某种过滤参数和解析器逻辑,以使用它实际执行过滤
如果您使用的是第三方API,而模式不支持过滤,那么作为客户机,除了事后处理响应之外,您没有什么可以做的