Может ли запрос или изменение graphql вернуть скалярное значение

Синтаксически вы можете определить запрос или мутацию в схеме так, чтобы она возвращала тип. Однако определение операции (то есть запрос или изменение, вызванное клиентом) должно иметь SelectionSet, поэтому я должен сделать:

mutation X { field }

Таким образом, результатом моей мутации или запроса должен быть объект с полями, он не может быть скаляром. Это правильно? Такое чувство, что я должен просто вернуть скаляр. Результат всегда упаковывается в конверт при отправке через HTTP, поэтому результат будет действительным JSON в любом случае (простой скаляр не является строго допустимым JSON).

Я правильно понимаю?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
15
0
15 061
1

Ответы 1

Фактически вы можете вернуть скаляр, например Boolean или String

type Mutation {
  hello(who: String!): String
}

Выдача этого запроса

mutation foo {
  hello("peter")
}

результат будет выглядеть так

data.hello // string

Протестировал это с помощью graphql-yoga + graphql-play:

schema from playgroundresult from playground

Используя что? Когда я попробовал, GraphiQL не понравился синтаксис, а спецификация явно не допускает этого. Я подозреваю, что реализация сервера ДЕЙСТВИТЕЛЬНО допускает это, но в спецификации определение операции состоит в том, что за ней следуют SelectionSet и нет SelectionSet (opt)

Tom Quarendon 26.10.2018 12:45

Я играю с graphql-yoga и «игровой площадкой graphql», и примеры работают ...

lipp 26.10.2018 13:18

Да, GraphiQL, похоже, тоже нравится, но спецификация, похоже, указывает на то, что он недействителен. Поскольку я хочу вернуть скаляры, я возьму на себя реальность, а не спецификацию!

Tom Quarendon 26.10.2018 13:59

@TomQuarend в приведенном выше примере действителен в соответствии со спецификацией. За именем мутации следует набор выбора, содержащий поле приветствия.

Matt Timmermans 26.10.2018 14:34

Я не нашел утверждения о скалярных типах в результатах запроса в схеме GraphQL, но этот пример: spec.graphql.org/June2018/#example-50137 Похоже, считается, что он возвращает строку из запроса.

magic_al 03.04.2020 07:36

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