【发布时间】:2018-05-03 01:15:55
【问题描述】:
graphql 包中的buildSchema 和graphql-tools 包中的makeExecutableSchema 有什么区别。
【问题讨论】:
-
我认为
buildSchema一开始并不存在,所以它们是一样的,只是buildSchema是后来添加的
标签: graphql apollo graphql-js
graphql 包中的buildSchema 和graphql-tools 包中的makeExecutableSchema 有什么区别。
【问题讨论】:
buildSchema一开始并不存在,所以它们是一样的,只是buildSchema是后来添加的
标签: graphql apollo graphql-js
除了它们来自两个不同的包,因为buildSchema 来自official graphql-js package 和makeExecutableSchema 来自Apollo,它们的作用也略有不同。
buildSchema 从模式语言构建模式对象。它只需要一大串类型定义作为参数。
makeExecutableSchema 将模式和解析器组合成可执行模式。它是graphql-tools 包的一部分,可以更轻松地使用模式语言,同时还可以编写解析器。所以你定义类型和解析器并将它们传递给makeExecutableSchema。您可以将一组 Schema 定义传递给它,这样您就可以将多个模式合并在一起,对其进行模块化。
请参阅Apollo docs for graphql-tools,了解他们建议的构建 GraphQL 服务器的方法。
【讨论】:
makeExecutableSchema。它们是必需的。当您使用graphql-tools 时,这是构建 GraphQL 服务器的一种方式。您不必这样做,因此您可以改用 buildSchema 并将您的解析器作为选项传递给您的 GraphQL 端点。