graphql当不使用别名时出现FieldsConflict类型的验证错误

时间:2019-02-15 09:02:34

标签: graphql graphql-java github-graphql graphql-spring-boot

当我在请求中未使用别名时,出现错误“ FieldsConflict类型的验证错误”。请确认是否符合预期或有解决方法

{
    person(search: [{firstname: "DAN", lastname: "WATLER", country: "FRANCE"}])
    { 
        firstname
        lastname
        country
        age
        address      
    }

    person(search: [{firstname: "FRANK", lastname: "TEE", country: "FRANCE"}])
    { 
        firstname
        lastname
        country
        age
        address      
    }
}

上面的代码给出了验证错误,但是如果我使用下面显示的别名,错误就不会出现,并且我会成功地响应。

我不想使用别名,请提出任何解决方法。 谢谢!

{
    dan: person(search: [{firstname: "DAN", lastname: "WATLER", country: "FRANCE"}])
    { 
        firstname
        lastname
        country
        age
        address      
    }

    frank: person(search: [{firstname: "FRANK", lastname: "TEE", country: "FRANCE"}])
    { 
        firstname
        lastname
        country
        age
        address      
    }
}

1 个答案:

答案 0 :(得分:1)

通常,GraphQL将数据作为JSON对象返回,并且在JSON文档中不可能有2个(有效)对象具有相同的键(在您的情况下为person)。因此,要实现您的描述几乎是不可能的。

第一个查询的结果将类似于:

{
  "data": {
    "person": {
      "firstname": "DAN",
      ...
    },
    "person": { // this is not valid
      "firstname": "FRANK"
      ...
    }
  }
}

这就是为什么您必须使用alias

另一种选择是查看GraphQL服务器是否具有返回person列表的查询,并且结果将在数组内部,例如:

{
  "data": [
    {
      "firstname": "DAN",
      ...
    },
    {
      "firstname": "FRANK",
      ...
    }
  [
}