解决后处理 connection_type
Process connection_type after resolved
我使用 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
我最终自定义了连接 class。
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
我使用 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
我最终自定义了连接 class。
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