使用mergeSchemas的Apollo Server模式拼接,如何使用来自单独模式的类型?

时间:2019-01-29 00:07:16

标签: graphql apollo graphql-js apollo-server

我目前正在将使用graphql-js定义的模式迁移到使用typedef和resolver的可执行模式。我想迭代地迁移我的代码库,并将它们缝合在一起。因此,在我开始做整个架构之前,让某些部分仍然使用graphql-js,而某些部分使用gql typedef。

当我尝试重用我的typedef中的现有类型时,我遇到了一个问题。

例如,我的typedef可能是:

type Query {
  customers: [User]
}

但是User类型的定义存在于我的graphql-js模式中。因此,即使在缝合模式之后,它也会说Error: Type "User" not found in document

这是否有可能,或者我是否必须一次迁移所有相关的东西?

示例:

// The original schema is created using graphql-js 
const oldSchema = new GraphQLSchema({query: ..., mutation: ...});

// The parts I'm slowly migrating to use graphql-tools
const newSchema = makeExecutableSchema({ typeDefs: ..., resolvers: ...});

// Then putting them together
const mergedSchema = mergeSchemas({schemas: [oldSchema, newSchema]})

1 个答案:

答案 0 :(得分:1)

我不确定这是否适用于您的“旧模式”,但是在我的项目中,我按照以下方式合并了它们……

 PUT /admin/realms/{realm}/users/{id}