0

在 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

但是,当我查询从数据库返回 nil 的布尔字段时,我得到 null。

备注查询

在我的笔记类型中,我直接将 graphql 字段与数据库中的布尔属性耦合。

field :is_public, types.Boolean

有人可以解释一下,也许想出一个不涉及更改所有字段的解决方案吗?

4

1 回答 1

0

每当给出非布尔值时,默认GraphQL::BOOLEAN_TYPE返回 nil,如下所示:https ://github.com/rmosolgo/graphql-ruby/blob/7f7e97cc2902046d485adcb6e8e6a5eb462b3faf/spec/graphql/boolean_type_spec.rb

所以这里可能发生的types.Boolean是仍然映射到旧的GraphQL::BOOLEAN_TYPE而不是使用你的新覆盖。

于 2017-10-15T13:58:31.577 回答