这是一个非常基本的问题,但是如何调用扩展类型或接口?
所有文档都指向使用extend type Person
添加基于人员的字段。
我希望它能像这样工作
Employee extend type Person {
salary: Int!
}
但文档表明它是这样的:
extend type Person{
salary: Int!
}
那么,如何查询员工工资呢?如果 Person 有多个扩展名怎么办,例如雇员和承租人?我认为我可能会受到传统思维的阻碍,但我希望扩展能够产生命名和可查询的结果。
The 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. 从基本模式扩展。您可能有多个构建在某些基本架构之上的架构。或者你可能是将远程模式拼接在一起 https://www.apollographql.com/docs/graphql-tools/schema-stitching.html。在这些场景中,我们通常希望添加特定于我们的新架构的字段,而这些字段在基本类型上不存在。这也可用于实现基本模式中缺少的指令:
extend type SomeType @customDirective
The extend
关键字只能修改现有类型;它不是继承的工具。实际上,GraphQL 不支持类型继承。接口提供了对现有类型的抽象级别,但实现接口的类型不会从该接口继承任何字段。没有办法做到这一点,除非你使用像这样的库graphql-s2s https://www.npmjs.com/package/graphql-s2s.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)