GraphQL 允许跨类型建立关系,包括一对一(1:1)、一对多(1:N)和多对多(M:N)关系。
创建新的一对一关系
在 “架构资源管理器 ”窗格中,选择类型旁边的省略号,然后选择“ 管理关系 ”选项。 此时将显示管理关系屏幕。
选择“新建关系”。 在本示例中,我们基于 Product 类型和 ProductModel 类型中都存在的 ProductModelID 字段,在这两种类型之间创建新的一对一关系。 我们选择“一对一”作为基数,选择“来源”和“目标”类型,然后为此关系选择“来源”和“目标”字段。
注意
可以在“发件人”和“到”字段选取器中选择多个字段。 使用此功能可以创建包含多个字段的关系。
一对多 (1:N) 和多对多 (M:N) 关系
例如,若要在产品和订单之间创建一对多 (1: N) 关系,其中每个产品可以与多个订单关联,请选择“一对多”作为基数。 这种关系反映了这样一种想法:单个产品可以链接到多个订单,但每个订单只能链接到一个产品。
对于多对多 (M:N) 关系,例如书籍和作者之间,一本书可以有多个作者,一个作者可以有多本书,请选择“多对多”作为基数。 架构中需要有一个链接类型来适应这种关系。
选择多对多作为基数时,“新建关系”对话框会显示另一组选取器。 例如,在 Books 和 Author 中,选择一个链接类型(如 BooksAuthors),以及 BookId 和 AuthorId 等字段作为链接来源和字段。
多对多关系的注意事项
如果链接类型包含一个或多个未作为 From field(s) 或 To field(s) 引用的 字段,则 GraphQL 的 API 将自动生成以下四个一对多关系:
从来源类型到链接类型的一对多关系
从链接类型到来源类型的一对多关系
从目标类型到链接类型的一对多关系
从链接类型到目标类型的一对多关系
通过这些方法,可以在任何查询或突变中引用链接类型的未链接字段,并允许查询或突变在任何方向引用关系。
如果链接类型中没有未链接的字段,则会创建一个多对多关系,并且查询或突变不需要引用链接类型即可使用该关系。
删除关系
通过选中关系旁边的复选框并选择“删除”,从“管理关系”屏幕中删除关系。