【问题标题】:How to group by Graphql query result如何按 Graphql 查询结果分组
【发布时间】:2019-02-22 09:37:14
【问题描述】:

我有以下 GraphQL 查询

query {
  Result: querydata {
    name
    code
    description
  }
}

返回以下数据

{
  "data": {
    "Result": [
      {
        "name": "Class1",
        "code": "ST1",
        "description": "Value"
      },
      {
        "name": "Class1",
        "code": "ST2",
        "description": "Value"
      },
      {
        "name": "Class2",
        "code": "FS1",
        "description": "Value"
      },
      {
        "name": "Class2",
        "code": "FS2",
        "description": "Value"
      }
    ]
  }
}

在此数据中,我有一个名称字段,它可以是“Class1”或“Class2”。我不想以可以将 Class1 和 Class2 数据分开的方式对这些数据进行分组。有没有办法做到这一点。我可以通过提供名称过滤器运行 2 个单独的查询来实现这一点,但可以说我没有那个选项。

我想将结果转换如下

{
  "data": {
    "Result": [
      "Class1": [
          {
            "code": "ST1",
            "description": "Value"
          },
          {
            "code": "ST2",
            "description": "Value"
          }
      ]

      "Class2": [
          {
            "code": "FS1",
            "description": "Value"
          },
          {
            "code": "FS2",
            "description": "Value"
          }
      ]
    ]
  }
}

【问题讨论】:

  • 您实现过目标吗?我正在尝试做类似的事情,以便在 Grafana 中更轻松地使用数据。
  • 是的,我通过转换查询类型和关联的类对象来管理它。 @Austio 也提出了类似的建议。
  • 事实上,我在服务器端 (API) 和 Clint 端 (Vuejs) 过滤/分组等查询类型转换都与 Underscore.js 库一起使用。根据给定的场景,如果 API 返回的数据需要预先格式化,或者我们可以只返回平面类型的 ov 结构,客户端将根据需要进行格式化。

标签: graphql graphql-java


【解决方案1】:

您所描述的是应该在客户端发生的事情,或者允许您的查询类型接收您用来返回propper类的名称选项,那么下面的查询将适用于您所需要的假设它是能够查找查询数据的名称

query {
  Class1: querydata(name: "Class1") {
    code
    description
  }
  Class2: querydata(name: "Class2") {
    code
    description
  }
}

【讨论】:

  • 是的,只有当我在查询类型中操作上下文或我允许名称作为过滤器时,上述查询才会起作用。我想知道是否有任何格式化输出结果的选项。
猜你喜欢
  • 2020-04-26
  • 2021-09-12
  • 1970-01-01
  • 2020-06-01
  • 2019-12-29
  • 1970-01-01
  • 2019-07-14
  • 2014-01-25
  • 2018-10-08
相关资源
最近更新 更多