代码之家  ›  专栏  ›  技术社区  ›  Bob van Luijt

如何在graphql中影响父结果?

  •  1
  • Bob van Luijt  · 技术社区  · 7 年前

    以下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
        }
      }
    }
    

    会导致

    {
    “数据”:{
    “搜索”:[
    {
    “firstname”:“鲍勃”,
    “城市”:{
    “城市名”:“马德里”
    }
    }
    ]
    }
    }
    

    我认为这与查询的结构有关,但我不确定。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Marco Daniel    7 年前

    我相信通过 City(cityName:...) 不应该影响 firstName 是的。只有一个字段会影响整个响应,这对api来说可能是一个糟糕的结构。

    但是为了达到这样的目的,我建议在 search ,例如:

    {
      search(firstName: "Bob", cityName: "Madrid") {
        firstName
        City {
          cityName
        }
      }
    }
    

    并在 搜索 分解器。

    推荐文章