Vad*_*est 4 graphql react-apollo
我正在尝试优化在整个应用程序中共享的一些反应组件(例如页脚和页眉组件)执行的查询。
institutionPath当未提供变量时,我试图不获取学生解决方案详细信息。
query organisationAndInstitution($organisationName: String!, $institutionPath: String!, $fetchInstitution: Boolean!){
organisation(where: {
name: $organisationName
}){
name
}
studentSolutionRelationships(where:{
AND: [
{
status: PUBLISHED
},
{
studentSolution: {
status: PUBLISHED
}
}
]
}) @include(if: $fetchInstitution) {
status
}
}
Run Code Online (Sandbox Code Playgroud)
为此,我添加了一个fetchInstitution布尔变量并添加了@include(if: $fetchInstitution)指令。
但指令似乎仅适用于字段,而不适用于整个查询。所以我想知道我想做的是否可能,因为我写的方式是无效的。
GraphQL 文档中的任何字段都可以使用该指令显式包含@include或使用该指令显式排除@skip。该指令应在字段名称和参数之后提供,但在字段的选择集之前提供(如果有的话),如您的问题所示:
studentSolutionRelationships(where:{
#...input fields omitted for brevity
}) @include(if: $fetchInstitution) {
status
}
Run Code Online (Sandbox Code Playgroud)
该指令采用单个参数 ( if),该参数必须是一个Boolean值。该值可以是文字(即true或false)或该类型的变量Boolean。GraphQL 不提供计算表达式的方法——任何条件逻辑都必须驻留在客户端代码中,并用于确定传递给参数的变量的值if。
这些指令可以应用于文档中的任何字段,包括根级字段,例如问题中的studentSolutionRelationships和。organisation事实上,您可以使用这些指令排除所有根字段 - 只需记住,在这种情况下,查询仍将运行并仅返回一个空对象。
换句话说,你这里的做法是正确的。如果查询失败,则是因为不相关的问题。
| 归档时间: |
|
| 查看次数: |
4475 次 |
| 最近记录: |