如何以突变形式返回自定义对象?

时间:2019-09-02 21:59:00

标签: ruby-on-rails ruby graphql

我希望我的GraphQL突变返回类型对象中未定义的字段

我将Rails 6与Ruby GraphQL一起使用。我已经描述了UserType,其字段为usernameemailpassword。在我的登录突变中,我想返回一个jwt令牌作为响应。这是我到目前为止所拥有的;

用户类型:

module Types
  class UserType < BaseObject
    field :id, ID, null: false
    field :email, String, null: false
    field :username, String, null: false
  end
end

突变:

module Mutations
  UserMutation = GraphQL::ObjectType.define do
   field :login, Types::UserType do
     argument :username, !types.String
     argument :password, !types.String

     resolve ->(_obj, args, _ctx) do
       # perform the authentication and return a jwt token.
     end
   end
  end
end

我希望得到这样的答复:

{
  "data" : {
    "token": "my_generated_token"
  }
}

或形状相同的错误消息。

1 个答案:

答案 0 :(得分:0)

更新:这是对我有用的解决方案。 我创建了一个新类型LoginType,该类型定义了tokenuser字段,并使突变对其进行响应,而不是UserType

module Types
  class LoginType < BaseObject
    field :token, String, null: false
    field :user, Types::UserType, null: false
  end
end

感谢@rmosolgo的帮助