[英]is there a way to group queries in graphQL?
我正在尝试对 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":[...],
],
...
}
这就是为什么我们想要嵌套
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 }
}
那将不会具有您要查找的特定形式–没有在您的查询中添加或删除任意级别的好方法,例如添加“ Employees”标签或从React样式的连接记录中删除图层–但是可以检索您要查找的数据。
我认为您对响应的期望是通过使用红宝石获得的。 我在某些项目中较早时看到过;)“让我们将所有内容打包到一个查询中,这是最佳选择”,并“将响应数据分发到组件”。
Ruby开发人员通常将反应当作另一个模板引擎,他们拒绝他自己,分开生活,不分开关注点,不赋予客户端应用程序自己的责任。 一种路线,一种视图,简单的交互,没有真正的SPA ...最终导致不良的UX /可用性。 他们对此无视:D
Apollo客户端将批处理单独的查询,将响应保留在规范化的缓存中- 无需在后端执行 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.