0

当我在请求中未使用别名时,我收到错误“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      
    }
}
4

1 回答 1

2

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

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

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

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

另一种选择是查看 GraphQL 服务器是否有一个返回列表的查询,person结果是否在数组中,例如:

{
  "data": [
    {
      "firstname": "DAN",
      ...
    },
    {
      "firstname": "FRANK",
      ...
    }
  [
}
于 2019-02-15T11:27:31.963 回答