我使用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
答案 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