почему логический тип graphql-ruby не возвращает false при нулевом значении

В репозитории graphql-ruby логический тип выглядит так:

GraphQL::BOOLEAN_TYPE = GraphQL::ScalarType.define do
  name "Boolean"
  description "Represents `true` or `false` values."

  coerce_input ->(value, _ctx) { (value == true || value == false) ? value : nil }
  coerce_result ->(value, _ctx) { !!value }
  default_scalar true
end

Но когда я запрашиваю логическое поле, которое возвращает ноль из базы данных, я получаю ноль.

Запрос на заметку

В моем типе заметки я напрямую связал поле graphql с моим логическим атрибутом в базе данных.

field :is_public, types.Boolean

Может кто-нибудь объяснить это и, возможно, придумать решение, которое не требует изменения всех полей?


person TamRock    schedule 12.10.2017    source источник


Ответы (1)


Значение по умолчанию GraphQL::BOOLEAN_TYPE возвращает nil всякий раз, когда дается не логическое значение, как показано здесь: https://github.com/rmosolgo/graphql-ruby/blob/7f7e97cc2902046d485adcb6e8e6a5eb462b3faf/spec/graphql/boolean_type

Так что здесь может происходить то, что types.Boolean по-прежнему отображается на старый GraphQL::BOOLEAN_TYPE и не использует ваше новое переопределение.

person Adim    schedule 15.10.2017