Я меняю формат своей схемы следующим образом:
var OldSchema = new GraphQLSchema({
query: queryType,
mutation: mutationType
});
к этому:
typeDef = `
type Query {
posts: [Post]
author: Author
}
`;
const NewSchema = makeExecutableSchema({
typeDefs: [typeDef],
resolvers: resolvers
});
Поскольку у меня много полей, и я хочу по одному перенести их из старого формата в новый формат, я использую функцию mergeSchemas из graphql-tools:
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 - это тот, который не работает.
Нет, это относится к обязанности фрагмента по пошлинам. Проблема в том, что проверка выполняется для OldSchema и RootSchema. Но всякий раз, когда он выполняет проверку для OldSchema, он ошибается и обрабатывает все ... как определения фрагментов, а не встроенные фрагменты.
Ситуация может быть более ясной, если использовать UpperCase для имен типов и имен фрагментов, чтобы вы не путали их с полями.
Мне было бы интересно посмотреть, как выглядит запрос после того, как он был переписан путем слияния схемы для получения данных из "OldSchema".



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Может, на один из фрагментов можно отдать alias? Нравиться:
fragment activities on techJob {
activities: duties {
...duty
}
}
А также
fragment dutiesSkill on Skill {
dutiesSkill: duties {
...duty
}
}
Проблема не в этом, проблема в том, что ... долг как определение дважды
Эта проблема была решена путем обновления до версии v14.0.0-rc.2. Нет никаких упоминаний о решаемой проблеме.
это что ... долг должен быть долгом?