【问题标题】:How do I return custom object in a mutation?如何在突变中返回自定义对象?
【发布时间】:2020-01-05 20:25:27
【问题描述】:

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

我正在使用带有 Rails 6 的 Ruby GraphQL gem。我描述了一个 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"
  }
}

或相同形状的错误信息。

【问题讨论】:

  • 你实际上得到了什么?
  • 现在我得到了一个用户对象,其字段仅在类型中定义。

标签: ruby-on-rails ruby graphql


【解决方案1】:

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

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

感谢@rmosolgo 的帮助

【讨论】:

    猜你喜欢
    • 2012-08-30
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多