首页 > 解决方案 > Rails Graphql 解决错误:参数数量错误(给定 1,预期 3)

问题描述

我创建了新的 Rails 应用程序graphql,但是对于 6 个月以上的指南有很多问题。我怀疑graphql-ruby变化相当快。

所以我在resolve方法中的最后一个问题:

module Types
  class QueryType < Types::BaseObject
    graphql_name "Root Query"
    description "The query root of this schema"

    field :allProducts, [ProductType], null: false do
      resolve ->(_obj, _args, _ctx) { Product.all }
    end
  end
end

错误:

wrong number of arguments (given 1, expected 3)
/usr/local/var/rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/graphql-1.9.0.pre1/lib/graphql/schema/field.rb:430:in `resolve'
/Users/alder/Projects/_apps/service_exchange/any-do-api/app/graphql/types/query_type.rb:7:in `block in <class:QueryType>'
/usr/local/var/rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/graphql-1.9.0.pre1/lib/graphql/schema/field.rb:222:in `instance_eval'
/usr/local/var/rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/graphql-1.9.0.pre1/lib/graphql/schema/field.rb:222:in `initialize'
/usr/local/var/rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/graphql-1.9.0.pre1/lib/graphql/schema/member/accepts_definition.rb:142:in `initialize'
/usr/local/var/rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/graphql-1.9.0.pre1/lib/graphql/schema/field.rb:88:in `new'
/usr/local/var/rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/graphql-1.9.0.pre1/lib/graphql/schema/field.rb:88:in `from_options'
/usr/local/var/rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/graphql-1.9.0.pre1/lib/graphql/schema/member/has_fields.rb:52:in `field'
/Users/alder/Projects/_apps/service_exchange/any-do-api/app/graphql/types/query_type.rb:6:in `<class:QueryType>'
/Users/alder/Projects/_apps/service_exchange/any-do-api/app/graphql/types/query_type.rb:2:in `<module:Types>'
/Users/alder/Projects/_apps/service_exchange/any-do-api/app/graphql/types/query_type.rb:1:in `<main>'

完整日志

你可以在这里查看完整的项目

我正在使用最新版本:

gem "graphql", "~> 1.9.0.pre1"

但是同样的错误1.8.*

标签: ruby-on-railsrubygraphql

解决方案


好吧,那resolve东西已经不行了。下一个代码工作正常:

class QueryType < Types::BaseObject
  graphql_name "RootQuery"

  field :categories, [Types::CategoryType], null: false

  def categories
    Category.all
  end
end

推荐阅读