Сшивание схемы сервера Apollo с использованием mergeSchemas, как использовать тип из отдельной схемы? - PullRequest
0 голосов
/ 29 января 2019

В настоящее время я выполняю миграцию схемы из graphql-js определений в executeableSchema, используя typedefs и resolvers.Я хотел бы перенести мою кодовую базу итеративно и соединить их вместе.Таким образом, для некоторых частей все еще используется graphql-js, а для некоторых частей используется gql typedefs, пока я не займусь всей схемой.

У меня возникает проблема, когда я пытаюсь повторно использовать существующий тип в моих typedefs.

Например, мой 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 голосов
/ 01 февраля 2019

Я не уверен, будет ли это работать с вашей "старой схемой", но в своем проекте я объединил их следующим образом ...

import requireGraphQLFile from 'require-graphql-file';
import {makeExecutableSchema } from 'apollo-server';

const schema1= requireGraphQLFile('./schema/schema1');
const schema2= requireGraphQLFile('./schema/schema2');
const schema3= requireGraphQLFile('./schema/schema3');

const schema = makeExecutableSchema({
   typeDefs: [schema1,schema2, schema3],
   resolvers
});
...