微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

向关联的 GraphQL 字段返回类型添加附加字段

如何解决向关联的 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?