【发布时间】:2019-09-12 02:40:10
【问题描述】:
我正在尝试优化由整个应用程序共享的一些反应组件执行的查询,例如页脚和页眉组件。
当未提供变量 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
}
}
为此,我添加了一个 fetchInstitution 布尔变量并添加了 @include(if: $fetchInstitution) 指令。
但指令似乎只适用于字段,而不适用于整个查询。所以我想知道我想做的事情是否可行,因为我写的方式是无效的。
【问题讨论】:
-
studentSolutionRelationships和organisation仍然是字段,它们恰好是查询根操作类型上的字段。你的方法没有什么不正确的。当您说它“无效”时,您是什么意思?你看到了什么错误? -
FWIW,我看到一个右括号丢失,但这可能只是一个错字,而不是你的代码。
-
当我尝试执行此操作时,查询挂起并最终超时。我没有使用我自己的 graphql 服务器,而是第三方,所以也许这种事情没有在他们的后端实现。但是我没有调试它,因为我认为我做的不对,我会更深入地看看。谢谢! (错字是因为我在这里删除了很多噪音,专注于重要的事情)
-
确实你是对的。该查询在 graphiql 上运行良好,但从我的源代码中失败,我猜它要么没有正确翻译,要么我在代码中犯了错误。不管怎样,这似乎是获取可选字段的正确方法!
-
这确实是我的代码中的一个愚蠢错误(没有为使用此查询的所有调用提供新变量)。如果你想写一个正确的回复,我会接受并关闭问题:)
标签: graphql react-apollo