可以合并两个 GraphQLSchema 实例吗?
Can two GraphQLSchema instances be merged?
我正在寻找类似 Object.assign
或 _.merge
的函数,但它对 GraphQLSchema
个对象进行操作。
假设我有两个 GraphQLSchema
的实例,称它们为 Base 和 Other,我想将 Other 合并到 Base 中以产生一个新的实例 Result,这样
- 出现在 Base 或 Other 中的字段在 Result 中由其原始
GraphQLFieldConfig
定义
- 两者中的字段减少为其他中的
GraphQLFieldConfig
。
看起来好像没有记录在案的方法可以做到这一点。那是对的吗?如果我走(相当危险的)未记录的路线,我注意到我可以利用对象的内部属性:
,但我不想那样做。
如有任何建议,我们将不胜感激。提前致谢!
请检查图书馆 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);
}
graphqlSchemas
是 GraphQLSchema
类型。就我而言,它是数组。
printSchema
将 GraphQLSchema
转换为字符串模板架构。
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,
],
});
我正在寻找类似 Object.assign
或 _.merge
的函数,但它对 GraphQLSchema
个对象进行操作。
假设我有两个 GraphQLSchema
的实例,称它们为 Base 和 Other,我想将 Other 合并到 Base 中以产生一个新的实例 Result,这样
- 出现在 Base 或 Other 中的字段在 Result 中由其原始
GraphQLFieldConfig
定义
- 两者中的字段减少为其他中的
GraphQLFieldConfig
。
看起来好像没有记录在案的方法可以做到这一点。那是对的吗?如果我走(相当危险的)未记录的路线,我注意到我可以利用对象的内部属性:
如有任何建议,我们将不胜感激。提前致谢!
请检查图书馆 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);
}
graphqlSchemas
是 GraphQLSchema
类型。就我而言,它是数组。
printSchema
将 GraphQLSchema
转换为字符串模板架构。
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,
],
});