有没有办法在 graphQL 中对查询进行分组?
Posted
技术标签:
【中文标题】有没有办法在 graphQL 中对查询进行分组?【英文标题】:is there a way to group queries in graphQL? 【发布时间】:2019-03-04 21:03:58 【问题描述】:我正在尝试对 graphQL 查询进行分组,以获得更有条理的响应。
我想查询 allEmployees 并返回以下格式的内容
GraphQL 查询
Employees:allEmployees
id
firstName
lastName
回应
"data":
"Employees": [
"new":[
"id": "1",
"firstName": "James",
"lastName": "Test"
,
"id": "3",
"firstName": "Charles",
"lastName": "Tes"
],
"updated":[
"id": "4",
"lastName": "Test"
,
],
"deleted":[
"id": "1",
,
],
我已经研究了一些选项来通过片段上的别名来命名子请求(比如新的、更新的和删除的),但这似乎不是一回事。我看过工会,但这似乎不是我想要的。
理想情况下,我想查询 graphql 之类的......
Employees:
new: allEmployees(status:"new")
id
firstName
lastName
updated: allEmployees(status:"updated")
id
firstName
lastName
deleted: allEmployees(status:"deleted")
id
但我认为不可能传递这样的嵌套查询。
有没有办法做这样的事情?我通过 graphql-ruby gem 将 graphql 与 ruby 一起使用。
如果有人需要更多信息,请告诉我?
谢谢
编辑
澄清一下。我们有多个实体将遵循新的、更新的、删除的模式。希望尝试在结果嵌套在父名称/别名(员工、用户)中的情况下获得响应
"data":
"Employees": [
"new":[...],
"updated":[...],
"deleted":[...],
],
"Users": [
"new":[...],
"updated":[...],
"deleted":[...],
],
...
这就是我们想要嵌套的原因
【问题讨论】:
只玩/graphiQL
?只需将一个查询放在另一个查询下方
@xadm 感谢您的评论。我正在寻找使用标签对查询进行分组。如果您有时间,请参阅上面的编辑。
如果您需要为不同的实体执行此操作,您需要为每个实体定义一个Type
。一旦你有了它,只需将你从数据库中查询的记录分组到你想要的相应标签中。
【参考方案1】:
GraphQL 绝对支持嵌套查询和多个***查询,graphql-ruby 支持这些就好了。
如果您的 GraphQL 架构如下所示:
type Employee
id: ID!
firstName: String
lastName: String
enum Status NEW, UPDATED, DELETED
type Query
allEmployees(status: Status): [Employee!]!
然后你可以写一个查询
fragment EmployeeData on Employee id firstName lastName
query Everyone
new: allEmployees(status: NEW) ... EmployeeData
updated: allEmployees(status: UPDATED) ... EmployeeData
deleted: allEmployees(status: DELETED) ... EmployeeData
这不会有您正在寻找的特定形式 - 没有很好的方法可以在查询中添加或删除任意级别,例如添加“员工”标签或从 React 样式的连接记录中删除层– 但它可以检索您要查找的数据。
【讨论】:
感谢@DavidMaze 的回复。我已经更新了问题以进一步解释我正在寻找的格式。根据您的回答,我认为不可能做我正在寻找的事情。我是否能够创建一种解析为我正在寻找的格式的类型,或者这会打破 graphql 约定? 您可以通过添加查询Employees: EmployeeStatuses
,然后使用new
、updated
和deleted
字段创建一个类型,从而创建一个产生精确响应格式的类型结构。它少了一点……不过 GraphQLy,感觉就像重写你的 API 以符合特定客户的期望。以上是关于有没有办法在 graphQL 中对查询进行分组?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法将 GraphQL 查询字段分组到子/嵌套查询组中?
有没有办法在 Google Cloud Platform 中对服务帐户进行分组?
有没有办法根据小数位在python中对数组/列表的值进行动态分组?