【问题标题】:In GraphQL/Rails how to pass arguments in the query_type?在 GraphQL/Rails 中如何在 query_type 中传递参数?
【发布时间】:2018-12-01 05:34:42
【问题描述】:

所以我试图查询数据库中的单个用户,但最终得到:

"Field 'userSingle' doesn't accept argument 'first_name'"

当我运行以下查询时,我在 GraphiQL 中得到了它:

query GetSingleUser {
 userSingle(first_name: "Test"){
  first_name
  last_name
 }
} 

在我的 query_type.rb 我有以下内容:

field :userSingle, !types[Types::UserType] do
 resolve -> (obj, args, ctx) {
 argument :first_name, !types.String
 argument :id, types.ID
 User.find(id: args[:id])}
end

原来我有:

field :userSingle, !types[Types::UserType] do
  resolve -> (obj, args, ctx) {User.find(id: args[:id])}
end

同样的问题。如果我取出 id: 同样的问题。同样的问题:

  field :userSingle, !types[Types::UserType] do
    resolve -> (obj, args, ctx) {
    argument :first_name, !types.String
    argument :id, types.ID
      user = User.find_by(
        id: args[:id],
        first_name: args[:first_name])
    }
  end

【问题讨论】:

    标签: ruby-on-rails graphql graphiql


    【解决方案1】:

    您可以使用以下内容创建user_type.rb 文件:

    class Types::UserType < Types::BaseObject
      description "A user object"
    
      field :id, Integer, null: false
      field :first_name, String, null: false
    end
    

    然后在query_type.rb文件中有以下内容:

    module Types
      class QueryType < Types::BaseObject
        ...
    
        # User query
        field :user, UserType, null: true do
          description "Find a user by first_name"
          argument :first_name, String, required: true
        end
        def user(first_name:)
          User.find_by(first_name: first_name)
        end
      end
    end
    

    所有这些都准备好后,查询应该如下所示:

    {
      user(first_name: "name") {
        id
        firstName: first_name
      }
    }
    

    【讨论】:

      【解决方案2】:

      而不是 !types[Types::UserType] 在 query_type 文件中 字段:userSingle 做 类型类型::用户类型 争论 解决 .. 结束

      【讨论】:

        猜你喜欢
        • 2021-06-07
        • 1970-01-01
        • 2019-06-22
        • 1970-01-01
        • 2018-08-02
        • 2010-11-28
        • 2014-10-16
        • 2021-12-05
        • 1970-01-01
        相关资源
        最近更新 更多