Ошибка: там может быть только один фрагмент с именем "columnName"

Я изменяю формат моей схемы из этого:

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), я получаю ошибку ** Может быть только один фрагмент с именем "долг".

Вот как выглядит мой запрос:

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 является той, которая дает сбой.

2 ответа

Эта проблема была решена путем обновления до версии v14.0.0-rc.2. Там нет упоминания о решаемой проблеме.

Вы можете дать alias к одному из фрагментов? Подобно:

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

А также

fragment dutiesSkill on Skill {
  dutiesSkill: duties {
    ...duty
  }
}
Другие вопросы по тегам