2.6.3 使用片段

在GraphQL的查询中,经常需要为查询指定所需字段。很多时候这些指定的字段是重复的,比如商品信息,几乎所有的查询都会需要id,name等几个常用信息,只有个别查询会需要一些特殊的字段。在这种情况下,可以使用片段来重新对所需字段定义。具体代码如下:

片段使用fragment关键字定义,且片段必须依托某个数据类型。比如上面例子中的prodFields就是一个片段。

在需要使用片段的地方,使用三个点“...”接片段名的方式,这样在片段里定义的字段就在原地展开了。在GraphQL中,把这个三个点“...”称作展开操作符。

为什么在这里强调是原地展开呢?因为可以在查询的不同层里使用片段。比如定义一个获取祖孙三代的查询:

祖孙三代就共享了一套userFields片段,但这个片段是在查询的不同层里展开的,查询等价于:

可以看到每一层都有自己的id和name,分别属于自己、父亲和祖父,并不会混淆在一起。

动动手:试试看,在片段里使用片段又会是一种什么状态呢?