Группировка мутаций graphql

Я пытаюсь сгруппировать свои мутации по типам второго уровня. Схема анализируется правильно, но распознаватели не работают в Apollo. Это вообще возможно? Вот запрос, который мне нужен:

mutation {
    pets: {
        echo (txt:"test") 
    }
}

Вот как я пытаюсь это сделать

Схема:

type PetsMutations {
    echo(txt: String): String
}

type Mutation {
    "Mutations related to pets"
    pets: PetsMutations
}

schema {
    mutation: Mutation
}

Резольверы:

  ...
  return {
    Mutation: {
      pets : {
        echo(root, args, context) {
            return args.txt;
        }
      },
    }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
0
517
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предполагая, что вы используете apollo-server или graphql-tools, вы не можете так вложить резолверы в свою карту резолвера. Каждое свойство в карте преобразователя должно соответствовать типу в вашей схеме и само по себе быть картой имен полей для функций преобразователя. Попробуйте что-то вроде этого:

{
  Mutation: {
    // must return an object, if you return null the other resolvers won't fire
    pets: () => ({}),
  },
  PetsMutations: {
    echo: (obj, args, ctx) => args.txt,
  },
}

Примечание: ваш запрос недействителен. Поскольку поле echo является скаляром, у вас не может быть для него подвыборки полей. Вам нужно убрать пустые скобки.

Спасибо! Обновлен запрос в вопросе, чтобы он был действительным.

Joe Abrams 23.10.2018 22:48

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