Процесс 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