0

我正在改变我的模式的格式:

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 是失败的。

4

2 回答 2

0

此问题已通过更新到 v14.0.0-rc.2 版本得到解决。没有提及正在解决的问题。

于 2018-07-18T02:03:50.063 回答
0

您也许可以给alias其中一个片段?喜欢:

fragment activities on techJob {
  activities: duties {
    ...duty
  }
}

fragment dutiesSkill on Skill {
  dutiesSkill: duties {
    ...duty
  }
}
于 2018-07-16T13:18:26.547 回答