如何分离模式和解析器并将它们合并 apollo-server-express
how to seperate schema and resolvers and merage them apollo-server-express
我有 User 和 Post typeDefs/resolvers 我想把它们分开所以我可以得到
User.schema.js
User.resolver.js
Post.schema.js
Post.resolver.js
link.Schema.js
link.resolvers.js
如何做到这一点并将它们合并成只有一个 typeDefs/resolvers 传递给
const server = new ApolloServer({
typeDefs,
resolvers
});
我一直在使用 merge-graphql-schemas
包来定义类型,并使用 lodash 深层对象合并功能来解析器,如下所示:
import merge from "lodash/merge"
import { mergeTypes } from "merge-graphql-schemas"
import UserSchema from "./User.schema"
import UserResolvers from "./User.resolvers"
import PostSchema from "./Post.schema"
import PostResolvers from "./Post.resolvers"
import LinkSchema from "./Link.schema"
import LinkResolvers from "./Link.resolvers"
const typeDefs = mergeTypes([UserSchema, PostSchema, LinkSchema])
const resolvers = merge(UserResolvers, PostResolvers, LinkResolvers)
const server = new ApolloServer({
typeDefs,
resolvers
});
编辑:请注意,graphql-tools
's mergeSchemas
现在是与 apollo 服务器进行模式拼接的推荐方式。
合并类型不需要更多依赖,因为 graphql-tools 对它们很好。
看看https://github.com/techyaura/graphqlNodeMongodb-server/tree/master/src/gql,如果有帮助。
我在回购 https://github.com/techyaura/graphqlNodeMongodb-server/tree/master/src/gql/types 中有两个文件 todo.types.js
和 user.type.js
& 我只是将它们连接起来并且工作正常。
注意:我没有使用 APOLLO GRAPHQL,而是简单地使用 express-graphql
我有 User 和 Post typeDefs/resolvers 我想把它们分开所以我可以得到
User.schema.js
User.resolver.js
Post.schema.js
Post.resolver.js
link.Schema.js
link.resolvers.js
如何做到这一点并将它们合并成只有一个 typeDefs/resolvers 传递给
const server = new ApolloServer({
typeDefs,
resolvers
});
我一直在使用 merge-graphql-schemas
包来定义类型,并使用 lodash 深层对象合并功能来解析器,如下所示:
import merge from "lodash/merge"
import { mergeTypes } from "merge-graphql-schemas"
import UserSchema from "./User.schema"
import UserResolvers from "./User.resolvers"
import PostSchema from "./Post.schema"
import PostResolvers from "./Post.resolvers"
import LinkSchema from "./Link.schema"
import LinkResolvers from "./Link.resolvers"
const typeDefs = mergeTypes([UserSchema, PostSchema, LinkSchema])
const resolvers = merge(UserResolvers, PostResolvers, LinkResolvers)
const server = new ApolloServer({
typeDefs,
resolvers
});
编辑:请注意,graphql-tools
's mergeSchemas
现在是与 apollo 服务器进行模式拼接的推荐方式。
合并类型不需要更多依赖,因为 graphql-tools 对它们很好。 看看https://github.com/techyaura/graphqlNodeMongodb-server/tree/master/src/gql,如果有帮助。
我在回购 https://github.com/techyaura/graphqlNodeMongodb-server/tree/master/src/gql/types 中有两个文件 todo.types.js
和 user.type.js
& 我只是将它们连接起来并且工作正常。
注意:我没有使用 APOLLO GRAPHQL,而是简单地使用 express-graphql