我想使用此模式从GraphQL Ruby返回验证失败:https://medium.com/@sachee/200-ok-error-handling-in-graphql-7ec869aec9bc
从我的突变中,我希望能够返回这样的并集的有效载荷:
class RegistrationPayloadType < Base::Union
possible_types UserType, ValidationFailureType
def self.resolve_type(object, context)
if context.current_user.present?
UserType
else
ValidationFailureType
end
end
end
我在突变中的解决方法是这样的
def resolve(input:)
@input = input.to_h
if registration.save
candidate
else
registration.errors
end
end
然后客户可以这样调用突变;
mutation UserRegistrationMutation($input: UserRegistrationInput!) {
userRegistration(input: $input) {
__typename
... on User {
id
}
... on ValidationFailure {
path
message
}
}
}
如何在GraphQL-ruby中返回联合作为有效载荷?
答案 0 :(得分:0)
答案实际上非常简单。如果您想从突变中返回其他类型,就我而言,就是上面的RegistrationPayloadType。
class RegistrationMutation < Base::Mutation
argument :input, Inputs::RegistrationInputType, required: true
payload_type RegistrationPayloadType
...
end
使用payload_type类方法可以得到所需的信息。
答案 1 :(得分:0)
此博客(https://www.abhaynikam.me/posts/polymorphic-types-with-graphql-ruby/)介绍了如何在GraphQL-ruby中将联合类型用于多态类型。在这里,不是使用payload_type
而是返回另一个字段Type来解析联合类型。