【发布时间】:2018-12-19 21:51:10
【问题描述】:
我正在更改我的架构格式:
var OldSchema = new GraphQLSchema({
query: queryType,
mutation: mutationType
});
到这里:
typeDef = `
type Query {
posts: [Post]
author: Author
}
`;
const NewSchema = makeExecutableSchema({
typeDefs: [typeDef],
resolvers: resolvers
});
由于我有很多字段,我想将它们从旧格式一个一个转移到新格式,我正在使用graphql-tools的mergeSchemas功能:
export const RootSchema = mergeSchemas({
schemas: [NewSchema, OldSchema]
});
当我尝试创建一个查询(仅从 OldSchema 获取字段)时,我收到错误消息**只能有一个名为“duty”的片段。
这是我的查询的样子:
query {
person {
...personFragment
}
}
fragment conceptFragment on Person {
jobs {
... on techJob {
...activities
}
... on carpentryJob {
...skillSet
}
}
}
fragment activities on techJob {
duties {
...duty
}
}
fragment duty on Duties {
id
}
fragment skillSet on carpentryJob {
skills {
...dutiesSkill
}
}
fragment dutiesSkill on Skill {
duties {
...duty
}
}
我知道解析中发生了错误,并且似乎正在对 OldSchema 和 RootSchema 进行查询验证,但 RootSchema 是失败的。
【问题讨论】:
-
难道……职责就应该是职责?
-
不,那是指Duties上的碎片碎片税。问题在于 OldSchema 和 RootSchema 的验证正在发生。但是,每当它对 OldSchema 进行验证时,它就会搞砸,并将所有 ... 视为片段定义,而不是内联片段。
-
使用大写的类型名称和片段名称可能会更清楚,这样您就不会将它们与字段混淆。
-
我很想看看查询被模式合并重写以从“OldSchema”获取数据后的样子。
标签: javascript apollo graphql-js graphql-tools