如何影响 GraphQL 中的父结果?
How to influence the parent result in GraphQL?
以下 GraphQL 请求:
{
search {
firstName
City{
cityName
}
}
}
结果:
{
"data": {
"search": [
{
"firstName": "Alice",
"City": {
"cityName": "Berlin"
}
},
{
"firstName": "Bob",
"City": {
"cityName": "Madrid"
}
}
]
}
}
添加 firstName 参数会产生以下结果;
要求:
{
search(firstName:"Bob") {
firstName
City{
cityName
}
}
}
在:
{
"data": {
"search": [
{
"firstName": "Bob",
"City": {
"cityName": "Madrid"
}
}
]
}
}
到目前为止一切顺利,但是,如果我现在向 City 添加一个参数,我想让它反映在完整的结果上。
以下请求:
{
search(firstName: "Bob") {
firstName
City(cityName: "Madrid") {
cityName
}
}
}
结果:
{
"data": {
"search": [
{
"firstName": "Bob",
"City": {
"cityName": null
}
}
]
}
}
但我希望结果是:
{
"data": {
"search": []
}
}
或此回复:
{
search {
firstName
City(cityName: "Madrid") {
cityName
}
}
}
应该导致
{
"data": {
"search": [
{
"firstName": "Bob",
"City": {
"cityName": "Madrid"
}
}
]
}
}
我认为这与查询的结构方式有关,但我不确定。
我认为City(cityName:...)
解决的数据应该不会影响firstName
。对于 API.
来说,让一个字段影响整个响应可能是一个糟糕的结构
但为了实现类似的目标,我建议在 search
上发送 cityName 参数,例如:
{
search(firstName: "Bob", cityName: "Madrid") {
firstName
City {
cityName
}
}
}
并在 search
解析器上解析该数据输入。
以下 GraphQL 请求:
{
search {
firstName
City{
cityName
}
}
}
结果:
{
"data": {
"search": [
{
"firstName": "Alice",
"City": {
"cityName": "Berlin"
}
},
{
"firstName": "Bob",
"City": {
"cityName": "Madrid"
}
}
]
}
}
添加 firstName 参数会产生以下结果;
要求:
{
search(firstName:"Bob") {
firstName
City{
cityName
}
}
}
在:
{
"data": {
"search": [
{
"firstName": "Bob",
"City": {
"cityName": "Madrid"
}
}
]
}
}
到目前为止一切顺利,但是,如果我现在向 City 添加一个参数,我想让它反映在完整的结果上。
以下请求:
{
search(firstName: "Bob") {
firstName
City(cityName: "Madrid") {
cityName
}
}
}
结果:
{
"data": {
"search": [
{
"firstName": "Bob",
"City": {
"cityName": null
}
}
]
}
}
但我希望结果是:
{
"data": {
"search": []
}
}
或此回复:
{
search {
firstName
City(cityName: "Madrid") {
cityName
}
}
}
应该导致
{
"data": {
"search": [
{
"firstName": "Bob",
"City": {
"cityName": "Madrid"
}
}
]
}
}
我认为这与查询的结构方式有关,但我不确定。
我认为City(cityName:...)
解决的数据应该不会影响firstName
。对于 API.
但为了实现类似的目标,我建议在 search
上发送 cityName 参数,例如:
{
search(firstName: "Bob", cityName: "Madrid") {
firstName
City {
cityName
}
}
}
并在 search
解析器上解析该数据输入。