【发布时间】:2020-03-29 10:31:32
【问题描述】:
我正在开发 GraphQL 模式验证工具。我想在内存中更新我的GraphQLSchema 对象。
例如替换我尝试做的类型:
const replaceType = (schema: GraphQLSchema, oldType: GraphQLNamedType, newType: GraphQLNamedType) => {
const config = schema.toConfig();
config.types = config.types.filter(t => t.name !== oldType.name);
config.types.push(newType);
return new GraphQLSchema(config);
}
然而这失败了here
Schema must contain uniquely named types but contains multiple types named "MyType".
at typeMapReducer (../../node_modules/graphql/type/schema.js:262:13)
at Array.reduce (<anonymous>)
at new GraphQLSchema (../../node_modules/graphql/type/schema.js:145:28)
似乎存在对我未更新的旧类型的现有引用,
【问题讨论】:
-
你从 types 数组中删除,但是从 typeMap 中删除呢?我不会在 JS 部分玩这个低级别,但我猜这就是它所发现的
-
配置没有 typeMap,schema 有一个。我认为搞砸的是某些类型仍然引用旧类型。例如,我可能要替换一个接口类型,但扩展旧接口的对象类型仍然引用旧类型。
标签: graphql graphql-js