graphql - 有没有办法在 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 }
}
这不会有您正在寻找的特定形式 - 没有很好的方法可以在查询中添加或删除任意级别,例如添加“员工”标签或从 React 样式的连接记录中删除层 - 但它可以检索您要查找的数据。
推荐阅读
- python - 有没有办法在 Visual Studio Code 中更改编辑器的只读设置?
- microservices - 如何从微服务中获取分组数据?
- algorithm - 是否有任何有效的算法可以从其输出中搜索给予图灵机的原始命令?
- python - 在python中,当我取款然后存款时如何更新余额?
- vue.js - 使用 vue-native-router 在 vue 组件内导航
- python - 在 jupyter 中找不到 Tensorboard 作为魔术功能
- ruby-on-rails - 使用包含包含的 or 子句
- arrays - Golang 将 interface{} 转换为 N 大小的数组
- r - 如何在R中的一个组中的两个变量的组合上选择具有某些值的行
- javascript - 在下面的示例中,如何使用计时器成功实现 .ajaxStart 和 .ajaxStop 功能