这是一个非常基本的问题,但是如何调用扩展类型或接口?
所有文档都指向使用extend type Person
添加基于Person的字段。
我希望它能像这样
Employee extend type Person {
salary: Int!
}
但是文档显示它是这样的:
extend type Person{
salary: Int!
}
那么,我该如何查询员工薪水?如果Person有多个扩展名,例如员工和房客?我想我可能会受到传统思维的束缚,但我希望扩展名能够带来一些可查询的名称。
答案 0 :(得分:1)
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不支持类型继承。接口提供了对现有类型的抽象级别,但是实现接口的类型不会从该接口继承任何字段。除非您使用graphql-s2s之类的库,否则无法做到这一点。