Express 如何在apollo server中实现@include或@skip指令
我有一个大的数据集,我正在试验。我试图有条件地包含嵌套对象。 我的客户查询:Express 如何在apollo server中实现@include或@skip指令,express,graphql,apollo,Express,Graphql,Apollo,我有一个大的数据集,我正在试验。我试图有条件地包含嵌套对象。 我的客户查询: query getAllAlbums ($fetchPhotos: Boolean!){ albums{ id title tags{ ...Tag weight } carouselItems{ id, mediaUrl } photos @include(if: $fetchPhotos){ .
query getAllAlbums ($fetchPhotos: Boolean!){
albums{
id
title
tags{
...Tag
weight
}
carouselItems{
id,
mediaUrl
}
photos @include(if: $fetchPhotos){
...Photo
}
}
}
第一次尝试在服务器端实现时,我将其添加到架构中:
type Album @include{
id: String
title: String
tags: [Tag]
photos: [Photo] @include(if: fetchPhotos)
carouselItems: [Photo]
}
我收到验证错误:
Error: Directive "@include" may not be used on OBJECT.
Directive "@include" argument "if" of type "Boolean!" is required, but it was not provided.
Directive "@include" may not be used on FIELD_DEFINITION.
好的,我不能在模式上使用它,那么剩下什么呢?解决者?它不在争论中
我如何实现这一点?apollographql文档表示他们支持它,但没有给出这些示例。中内置了
@skip
和@include
指令。您不必在服务器端执行任何操作来启用它们——它们只需与任何符合规范的GraphQL服务器一起工作即可
如果字段或片段上存在
@include
指令,并且If
值为false
,则GraphQL运行时将简单地将该字段或片段视为不存在(不会调用解析程序,并且将从返回给客户端的结果中忽略该字段)。当if
值为true
时,这同样适用于@skip
指令。因此,客户端不发送布尔值似乎是个问题。。。我将提出另一个问题。谢谢