gpt4 book ai didi

Graphql 数据建模 : extending types and interfaces

转载 作者:行者123 更新时间:2023-12-03 16:23:52 25 4
gpt4 key购买 nike

这是一个非常基本的问题,但是如何调用扩展类型或接口(interface)?

所有文档都指向使用 extend type Person添加基于 Person 的字段。

我希望它能像这样工作

Employee extend type Person {
salary: Int!
}

但是文档表明它是这样的:
extend type Person{
salary: Int!
}

那么,如何查询员工工资呢?如果 Person 有多个扩展名怎么办,例如雇员和租户?我想我可能会受到传统思维的阻碍,但我希望扩展能够产生命名和可查询的东西。

最佳答案

extend关键字有效地用于修改模式中的现有类型。这最常用于两种情况:

1. 连接表示单个模式的多个字符串。 您可以将架构拆分为多个文件,按域划分。然后,您可以执行以下操作:

#base.graphql
type Query {
viewer: User
}

# user.graphql
extend type Query {
users: [User!]!
}

# post.graphql
extend type Query {
post: [Post!]!
}

这会产生一个实际上与以下内容相同的架构:
type Query {
viewer: User
users: [User!]!
post: [Post!]!
}

2. 从基本模式扩展。 您可能有多个建立在某些基本模式之上的模式。或者你可能是 stitching together remote schemas .在这些场景中,我们通常希望添加特定于我们的新模式的字段,这些字段在基本类型中不存在。这也可用于实现基本模式中缺少的指令:
extend type SomeType @customDirective
extend关键字只能修改现有类型;它不是继承的工具。事实上, GraphQL 不支持类型继承。 接口(interface)提供了对现有类型的抽象级别,但实现接口(interface)的类型不会从该接口(interface)继承任何字段。没有办法做到这一点,除非你使用像 graphql-s2s 这样的库。 .

关于Graphql 数据建模 : extending types and interfaces,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54947605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com