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

graphql Validation error of type FieldsConflict coming when alias is not used

当我没有在我的请求中使用别名时,我收到错误 "Validation error of type 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      
    }
}

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

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

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

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

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

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