解决后处理connection_type

时间:2018-12-11 03:18:14

标签: graphql graphql-ruby

我使用graphql gem 1.8.11。

我的UserTypenotifications个连接字段,如果被查询,我想执行一些操作(以下示例中的read!)。

下面的示例对所有关联字段执行操作。 即使notifications字段具有分页参数,并且并非查询所有notifications,也会对所有notifications执行该操作。

如何仅对查询的节点执行操作?

module Types
  class UserType < Types::BaseObject
    implements GraphQL::Relay::Node.interface

    field :id, ID, null: false
    field :notifications, NotificationType.connection_type, null: true

    global_id_field :id


    def notifications
      object.notifications.tap { |o| o.read! }
    end
  end
end

1 个答案:

答案 0 :(得分:0)

我最终定制了连接类。

app / graphql / types / notification_type.rb:

module Types
  class NotificationType < Types::BaseObject
    #
    # existing code
    #

    class << self
      def connection_type_class
        @connection_type_class ||= Types::NotificationConnectionType
      end
    end
  end
end

app / graphql / types / notificaiton_connection_type.rb:

module Types
  class NotificationConnectionType < GraphQL::Types::Relay::BaseConnection
    def nodes
      super.map(&:read!)
    end
  end
end