Какова цель восклицательных знаков в определениях полей для типов GraphQL в Ruby? - PullRequest
0 голосов
/ 04 декабря 2018

Я следую этому руководству для изучения GraphQL с бэкэндом Ruby, а в разделе "Запрос на возврат ссылок" есть следующий код:

# defines a new GraphQL type
Types::LinkType = GraphQL::ObjectType.define do
  # this type is named `Link`
  name 'Link'

  # it has the following fields
  field :id, !types.ID
  field :url, !types.String
  field :description, !types.String
end

Iзнаете, что восклицательный знак - это просто оператор «не», но кто-нибудь может объяснить его назначение здесь?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

"!"Метка в GraphQL указывает, что это поле не имеет значения NULL.В вашем примере ни одно из полей id, url, description не может иметь значение NULL.

field :id, !types.ID
field :url, !types.String
field :description, !types.String

Оно имеет немного другое значение, если используется в списках.

[Int]!: Список не может быть NULL.Если вы передадите «null», это будет ошибкой, в то время как «[1, 2, null]» допустимо.[Int!]: Содержимое списка не может быть NULL.Он будет принимать список «null», но «[1, 2, null]» приведет к ошибке.

0 голосов
/ 04 декабря 2018

Это обязательное (не обнуляемое) поле.Реализация:

Строка!означает, что поле не имеет значения NULL, что означает, что служба GraphQL обещает всегда давать вам значение при запросе этого поля.На языке типов мы представим символы с восклицательным знаком.

https://graphql.org/learn/schema/#object-types-and-fields

Кажется, его заменил синтаксис ключевого слова:

field :handle, String, null: false

http://graphql -ruby.org / type_definitions / objects.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...