在查询里面用 Directive 可以影响查询的执行。之前我们在这个查询里用了变量,这里我们再给它添加一个变量,名字是 $withPosts,它的类型是 Boolean!,后面的叹号表示这个变量必填。
然后在 posts 这个字段上面可以用一个 Directive, 这些 Directive 用 @ 符号开头,可以使用 inclue 还有 skip,先用一下这个 include 。 括号,里面加上一个 if,它的值用一下 $withPosts 这个变量的值。
这样在执行这个查询的时候,提供给它的变量里面,如果把 withPosts 的值设置成 true,就会在响应的结果里面包含这个用了这个 @include Directive 的 posts 字段,如果 withPosts 的值是 false,在响应的结果里面就不会包含 posts 字段。
下面在 Query Variables 里面,设置一下查询需要的变量,添加一个 id ,设置一下它的值,再添加一个 withPosts,先把它的值设置成 true,执行一下这个查询。
响应的结果里面会包含用户里的 posts 字段。 修改一下查询的时候提供的查询变量里面的这个 withPosts 的值,换成 false。再执行一下这个查询。
这次从服务端那里响应回来的结果里面,就没有包含用户的 posts 字段。 因为在查询里的 posts 字段的上面,用了一个 @include 指令,它会根据 $withPosts 变量的值决定在查询的结果里面是否要包含这个字段。