GraphQL实战:写给全栈工程师们
上QQ阅读APP看书,第一时间看更新

2.6.2 使用别名

需求 需要做一个商品比较的查询,即根据客户端的需要,一次返回两个商品的信息。

提示:即调用两次product查询操作。

GraphQL可以自由组合查询,可否在一次查询请求中用不同的参数对同一个查询发送两次呢?比如把getProduct(id: “10001”)和getProduct(id:“10002”)同时发送给服务器端。有经验的读者或许已经发现,这两个查询返回的数据都是{“getProduct”: {…}},它们的key是相同的,所以不能同时出现在同一个JSON对象中。也就是说服务器端不能同时返回这两个查询的结果。那么该如何是好呢?这时就需要使用别名来解决这个问题。具体代码如下:

如上面的例子所示,可以在每个查询前面指定一个别名。使用了别名后,就解决了结果集中key冲突的问题。可以得到数据结果如下所示:

在客户端开发的时候,开发者需要注意服务器端返回数据对象中的key就是指定的别名。所以开发者要有一定的机制避免使用重复的别名。

动动手:给字段指定别名,执行下面的操作查看结果。