可以合并两个 GraphQLSchema 实例吗?

Can two GraphQLSchema instances be merged?

我正在寻找类似 Object.assign_.merge 的函数,但它对 GraphQLSchema 个对象进行操作。

假设我有两个 GraphQLSchema 的实例,称它们为 Base 和 Other,我想将 Other 合并到 Base 中以产生一个新的实例 Result,这样

看起来好像没有记录在案的方法可以做到这一点。那是对的吗?如果我走(相当危险的)未记录的路线,我注意到我可以利用对象的内部属性:

,但我不想那样做。

如有任何建议,我们将不胜感激。提前致谢!

请检查图书馆 merge-graphql-schemas。我想这可能对你有帮助

这是我的解决方案:

const { mergeTypes } = require('merge-graphql-schemas');
const { printSchema, parse } = require('graphql');

const typeArray = graphqlSchemas.map(printSchema);
const schema = mergeTypes(typeArray, { all: true });

  try {
    parse(schema);
  } catch (err) {
    console.log(err);
  }

graphqlSchemasGraphQLSchema 类型。就我而言,它是数组。

printSchemaGraphQLSchema 转换为字符串模板架构。

mergeTypes 将所有字符串模板模式合并为一个。

并且,为了安全起见,请使用 try/catch 验证架构是否有效。

使用 'graphql-tools' 中的 mergeSchemas,您可以合并 GraphQLSchema 对象

https://www.apollographql.com/docs/graphql-tools/schema-stitching.html#mergeSchemas

import { mergeSchemas } from 'graphql-tools';

const schema = mergeSchemas({
  schemas: [
    chirpSchema,
    authorSchema,
  ],
});