首页 > 解决方案 > 如何过滤分配给 GraphQL 中别名的值?

问题描述

我有一个工作查询,如下所示:

query orgs($limit: Int = 10) {
  orgs: research_db_fundingorganization(limit: $limit) {
    gridreference {
      id: data(path: "id")
      name: data(path: "name")
      country: data(path: "addresses[0].country")
      city: data(path: "addresses[0].city")
      types: data(path: "types")
    }
  }
}

但我只想在sayorgs.gridreference.country等于时返回对象Austria

我无法弄清楚如何过滤路径上可能存在更深的值。

过滤orgs.gridreference.idorgs.gridreference.name很简单,可以这样做:

query orgs($limit: Int = 10, $query: jsonb = {id: "grid.458347.9"}) {
  orgs: research_db_fundingorganization(limit: $limit, where: {gridreference: {data: {_contains: $query}}}) {
    gridreference {
      id: data(path: "id")
      name: data(path: "name")
      country: data(path: "addresses[0].country")
      city: data(path: "addresses[0].city")
      types: data(path: "types")
    }
  }
}

仅供参考,以上产生的结果:

{
  "data": {
    "orgs": [
      {
        "gridreference": {
          "id": "grid.458347.9",
          "name": "Austrian Development Agency",
          "country": "Austria",
          "city": "Vienna",
          "types": [
            "Government"
          ]
        }
      }
    ]
  }
}

为什么不可能做这样的事情:

query orgs($limit: Int = 10, $grid_country: String = "Austria") {
  orgs: research_db_fundingorganization(limit: $limit, where: {gridreference: {country: {_eq: $grid_country}}}) {
    gridreference {
      id: data(path: "id")
      name: data(path: "name")
      country: data(path: "addresses[0].country")
      city: data(path: "addresses[0].city")
      types: data(path: "types")
    }
  }
}

标签: graphqlhasura

解决方案


推荐阅读