如何分离模式和解析器并将它们合并 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.jsuser.type.js & 我只是将它们连接起来并且工作正常。

注意:我没有使用 APOLLO GRAPHQL,而是简单地使用 express-graphql