GraphQL参数的值无效。预期类型'Int

时间:2018-12-17 17:41:09

标签: ruby-on-rails graphql

我正在Rails中使用非常基本的GraphQL API。

我有一个'Gin'模型,可以在其中返回数据库中的少量记录,但是当尝试通过突变添加gin时,我遇到了字段类型问题:

mutation {
  createGin(name: "Plymouth", 
description: "Gin made in Plymouth", 
abv: "40", 
url: "http://www.plymouthgin.com",) {
    id
    name
    description
    abv
    url
  }
}

出现以下错误:

  

“ message”:“字段'createGin'上的参数'abv'具有无效值。   预期类型为“ Int”。”,

数据库中的abv字段是整数。

gin_type.rb

Types::GinType = GraphQL::ObjectType.define do
  name 'Gin'

  field :id, !types.ID
  field :name, !types.String
  field :description, !types.String
  field :abv, !types.Int
  field :url, !types.String
end

create_gin.rb

class Resolvers::CreateGin < GraphQL::Function

  argument :name, !types.String
  argument :description, !types.String
  argument :abv, !types.Int
  argument :url, !types.String

  type Types::GinType

  def call(_obj, args, _ctx)
    Gin.create!(
      name: args[:name],
      description: args[:description],
      abv: args[:abv],
      url: args[:ur],
    )
  end
end

我在其他地方想念东西吗?

更新 如果我更改突变以从40左右删除“”(即作为整数而不是字符串),则会收到以下错误消息:

{
  "data": {
    "createGin": null
  },
  "errors": [
    {
      "message": "Cannot return null for non-nullable field Gin.url"
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

尝试此突变:

mutation {
  createGin(name: "Plymouth", 
description: "Gin made in Plymouth", 
abv: 40, 
url: "http://www.plymouthgin.com",) {
    id
    name
    description
    abv
    url
 }
}

错误消息是正确的。您正在将abv参数作为字符串提供。

编辑:

在您的create_gin.rb上,您有一个错字

url: args[:ur],

每次您遇到错误消息时,首先要假设的是正确的。