不使用别名时出现FieldsConflict类型的graphql验证错误
Posted
技术标签:
【中文标题】不使用别名时出现FieldsConflict类型的graphql验证错误【英文标题】:graphql Validation error of type FieldsConflict coming when alias is not used 【发布时间】:2019-07-09 09:14:11 【问题描述】:当我在请求中未使用别名时,我收到错误“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】:通常GraphQL
将数据作为 JSON 对象返回,并且在 JSON 文档中不可能有 2 个(有效)对象具有相同的键(在您的情况下为 person
)。因此,几乎不可能实现您所描述的。
您的第一个查询的结果是这样的:
"data":
"person":
"firstname": "DAN",
...
,
"person": // this is not valid
"firstname": "FRANK"
...
这就是为什么你必须使用alias
。
另一种选择是查看 GraphQL 服务器是否有一个返回 person
列表的查询,结果是否在数组中,例如:
"data": [
"firstname": "DAN",
...
,
"firstname": "FRANK",
...
[
【讨论】:
以上是关于不使用别名时出现FieldsConflict类型的graphql验证错误的主要内容,如果未能解决你的问题,请参考以下文章