如何解决向关联的 GraphQL 字段返回类型添加附加字段
我的应用程序中有这种 GraphQL 类型。
module Types
module MyApp
class MembeRSStatus < Types::Base::Object
field :active,[Types::MyApp::User],null: true
field :on_leave,null: true
field :status_unkNown,null: true
end
end
end
我想为 User
字段的关联 on_leave
类型添加一个附加字段。
例如,对于 on_leave
字段,我希望关联的 User
具有附加字段 leave_duration
field :leave_duration,Integer,null: true
这样,我就可以进行如下查询:
query memberStatus{
memberStatus {
active { name }
onLeave { name leaveDuration }
statusUnkNown { name }
}
}
我已经查看了 https://graphql-ruby.org/type_definitions/extensions.html#customizing-fields 这个文档,但还不能实现它。这能做到吗?请帮忙。
解决方法
正如您所描述的,您需要将 leave_duration
字段添加到用户类型中。
module Types
module MyApp
class UserType
# other stuff
field :leave_duration,GraphQL::Types::ISO8601Date,null: true
# Optional: Define leave_duration if it isn't already a field on the model:
def leave_duration
# implementation that returns a date
end
end
end
end
看起来您在 field()
调用中可能有错别字,其中 :leave_duration
应该是一个符号,而不是一个变量或方法。这在上面的代码片段中已修复。
编辑:关于您关于仅在 on_leave 时有条件地拥有 leave_duration 的问题,我建议这样做:
def leave_duration
return nil unless object.on_leave
# implementation that returns a date
end
有一种方法可以从架构中隐藏字段,这里描述: https://github.com/rmosolgo/graphql-ruby/issues/893
但是,根据另一个字段的存在来隐藏一个字段对我来说似乎太过分了。我认为这主要是为了隐藏非管理员用户的 is_admin
等字段。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。