是否可以在graphql中的查询下添加一层分组?

时间:2019-07-19 14:31:10

标签: graphql

我有一个包含多个软件系统的graphql api。现在,我将直接在查询下列出所有类型,并带有软件系统的前缀。最终,每个软件系统可以具有数百种类型。

query {
    ERP_ItemMaster (partId: Int!): ItemMaster
    ERP_SalesOrder (doc: Int!): [SalesOrder]
    ERP_PurchaseOrder ...
    ERP_WorkOrder ...
    Warehouse_Type1
    Warehouse_Type2
    ShopFloor_Type1
    ShopFloor_Type2
    SupplierQuality_Type1
    SupplierQuality_Type2
}

type ItemMaster {
    field
    field
    ...
}

type SalesOrder {
    field
    field
    ...
}

...
...

这真的很好。例如,当我进入GraphiQL时,我开始输入“ ERP_”,建议框将其限制为该系统的类型/查询。

我想知道是否可以在查询下添加一个层来按软件系统对类型进行分组。

查询时,代替:

query {
    ERP_ItemMaster(partId: 12345) {
        field1
        field2
    }
}

我会:

query {
    ERP {
        ItemMaster(partId: 12345) {
            field1
            field2
        }
    }
}  

在分组级别上,我陷入了分解器的困扰-上例中的ERP。它需要以某种方式包装该系统上子类型的所有解析程序-而不是顶级查询下每种类型的一个解析程序。

模式:

type Query {
    ERP: ERP
    Warehouse: Warehouse
    ShopFloor: ShopFloor
    SupplierQuality: SupplierQuality
}

type ERP {  // What does the resolver look like for this?
    ItemMaster(partId: Int!): ItemMaster
    SalesOrder (doc: Int!): [SalesOrder]
    PurchaseOrder (doc: Int!): [PurchaseOrder]
    WorkOrder (doc: Int!): [WorkOrder]
}
type ItemMaster { ... }
type SalesOrder { ... }
type PurchaseOrder { ... }
type WorkOrder { ... }

type Warehouse { ... }
...
...
...

type ShopFloor { ... }
...
...
...

有可能吗?如果是这样,那甚至是个好主意,并且分组级别的解析程序是什么样的?

如果您有关于完全不同的组织方式的建议,我也愿意接受。我喜欢这样的想法:拥有一个端点并能够从那里访问公司的所有数据,但是也许为每个系统使用单独的graphql端点会更好?

谢谢!

0 个答案:

没有答案