Процесс connection_type после разрешения

Я использую graphql gem 1.8.11.

мой UserType имеет notifications поле подключения, и если оно запрашивается, я хотел бы выполнить некоторую операцию (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 ответ

Решение

Я закончил, чтобы настроить класс соединения.

Приложение /graphql/ типы /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

Приложение /graphql/ типы /notificaiton_connection_type.rb:

module Types
  class NotificationConnectionType < GraphQL::Types::Relay::BaseConnection
    def nodes
      super.map(&:read!)
    end
  end
end
Другие вопросы по тегам