ari*_*nmz 4 node.js apollo graphql
我正在使用 Apollo + Express 开始使用 GraphQL,我看到该示例schema在 typedef 的底部添加了一个名称:
let typeDefs = [`
type Query {
hello: String
}
schema {
query: Query
}`];
Run Code Online (Sandbox Code Playgroud)
在定义解析器后,它会使用以下内容生成架构makeExecutableSchema:
let schema = makeExecutableSchema({typeDefs, resolvers});
Run Code Online (Sandbox Code Playgroud)
但是,如果我删除schematypedefs的一部分,我仍然可以正常使用我的端点,例如:
http://localhost:3000/graphql/?query={hello}
Run Code Online (Sandbox Code Playgroud)
返回:
{"data":{"hello":"world"}}
Run Code Online (Sandbox Code Playgroud)
但是,如果我更改其他内容的查询部分,服务器将失败:
let typeDefs = [`
type Query {
hello: String
}
schema {
testquery: Query
}`];
Run Code Online (Sandbox Code Playgroud)
GraphQLError:语法错误:意外的名称“testquery”
我已经阅读了Apollo 的教程页面以及Node.js + GraphQL的How To GraphQL 教程,但找不到该schema部分的参考。
它是干什么用的?
关于架构
一个模式最多可以有三种根操作类型,但它只需要一种。查询类型必须存在于每个模式中,并且必须是对象类型 ( Spec )。此类型是对 GraphQL 进行查询时的根类型。此外,在进行突变时使用了一种突变根类型。最新添加的是订阅类型。
关于根类型
根类型是简单的对象类型。它们可以有字段,这些字段是参数。默认情况下,调用查询类型,调用Query变异类型,调用Mutation订阅根类型Subscription。如果您遵循这些标准名称,schema则可以省略规范。
# Doesn't need further specification, Query is the default name
type Query {
# ...
}
Run Code Online (Sandbox Code Playgroud)
您仍然可以随意命名这些类型。要定义哪个对象类型是根类型以输入图形,您必须使用架构定义。
# Non standard query type name
type MyQuery {
# ...
}
schema {
# Needs to be defined in the schema declaration
query: MyQuery
}
Run Code Online (Sandbox Code Playgroud)
对于变异和订阅类型也可以做同样的事情。
| 归档时间: |
|
| 查看次数: |
1767 次 |
| 最近记录: |