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

Я меняю формат своей схемы следующим образом:

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 - это тот, который не работает.

это что ... долг должен быть долгом?

Joe Warner 12.07.2018 14:22

Нет, это относится к обязанности фрагмента по пошлинам. Проблема в том, что проверка выполняется для OldSchema и RootSchema. Но всякий раз, когда он выполняет проверку для OldSchema, он ошибается и обрабатывает все ... как определения фрагментов, а не встроенные фрагменты.

Adolfo 12.07.2018 18:50

Ситуация может быть более ясной, если использовать UpperCase для имен типов и имен фрагментов, чтобы вы не путали их с полями.

brysgo 12.07.2018 20:17

Мне было бы интересно посмотреть, как выглядит запрос после того, как он был переписан путем слияния схемы для получения данных из "OldSchema".

brysgo 12.07.2018 20:23
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
835
2

Ответы 2

Может, на один из фрагментов можно отдать alias? Нравиться:

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

А также

fragment dutiesSkill on Skill {
  dutiesSkill: duties {
    ...duty
  }
}

Проблема не в этом, проблема в том, что ... долг как определение дважды

Adolfo 18.07.2018 04:02

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

Другие вопросы по теме