buildSchema和GraphQLSchema是GraphQL中用于定义schema的两种不同方式。
buildSchema是GraphQL.js中的一个函数,它使用GraphQL schema language(SDL)来定义schema。它接受一个字符串作为参数,并将其解析为一个GraphQLSchema实例。buildSchema可以用于快速定义schema,非常适合小型项目。
示例代码:
const { buildSchema } = require('graphql');
const schemaString = `
type Query {
hello: String
}
`;
const schema = buildSchema(schemaString);
// 等价于以下定义方式
const { GraphQLSchema, GraphQLObjectType, GraphQLString } = require('graphql');
const queryType = new GraphQLObjectType({
name: 'Query',
fields: {
hello: { type: GraphQLString },
},
});
const schema = new GraphQLSchema({
query: queryType,
});
GraphQLSchema是GraphQL.js中的一个类,它允许我们通过代码的方式定义schema。我们可以使用GraphQL.js提供的各种类来创建schema中的类型、字段和关联等。GraphQLSchema提供了更多的灵活性和精细的控制,适合大型项目或需要更多自定义选项的场景。
示例代码:
const { GraphQLSchema, GraphQLObjectType, GraphQLString } = require('graphql');
const queryType = new GraphQLObjectType({
name: 'Query',
fields: {
hello: { type: GraphQLString },
},
});
const schema = new GraphQLSchema({
query: queryType,
});
总结一下,buildSchema使用GraphQL schema language(SDL)字符串来定义schema,适用于快速定义简单的schema;而GraphQLSchema使用代码的方式来定义schema,提供更多的灵活性和自定义选项,适用于复杂的项目。