GraphQL能否使用不同参数多次查询同一字段?
当然可以!不过得注意别名的使用
你提到的这种用不同参数多次查询同一个字段的需求,在GraphQL里完全可行,但直接像你示例里那样写会遇到字段名冲突的问题——因为GraphQL的响应结果中,同级字段的名称必须唯一。
解决方法很简单:给每个重复的查询字段加上别名,这样就能在响应里区分不同的查询结果了。修改后的查询代码如下:
query { item100: myItem(size: 100, type: 2) { id, name } item150: myItem(size: 150, type: 2) { id, name } item10: myItem(size: 10, type: 1) { id, name } }
这里的item100、item150、item10就是我们为每个myItem查询设置的别名,对应的响应结果会是这样的:
{ "data": { "item100": { "id": "1", "name": "Large Type 2 Item" }, "item150": { "id": "2", "name": "Extra Large Type 2 Item" }, "item10": { "id": "3", "name": "Small Type 1 Item" } } }
如果你的查询需要重复获取相同的字段(比如这里都是id和name),还可以用**片段(Fragment)**来简化代码,提升可维护性:
# 定义一个片段,包含需要查询的字段 fragment BasicItemFields on Item { id name } query { item100: myItem(size: 100, type: 2) { ...BasicItemFields } item150: myItem(size: 150, type: 2) { ...BasicItemFields } item10: myItem(size: 10, type: 1) { ...BasicItemFields } }
这样之后如果要给所有查询添加新字段,只需要修改片段里的内容,不用逐个修改每个查询块,非常方便。
内容的提问来源于stack exchange,提问作者Oli
相关产品推荐
相关产品推荐

