Аргумент GraphQL имеет недопустимое значение.Ожидаемый тип Int - PullRequest
0 голосов
/ 17 декабря 2018

Я играю с очень простым API-интерфейсом GraphQL в Rails.

У меня есть модель 'Gin', где я могу вернуть несколько записей, которые есть в БД, однако при попыткедобавить джина через мутацию, я получаю проблему с типом поля:

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

выдает следующую ошибку:

"message": "Аргумент 'abv'on Поле 'createGin' имеет недопустимое значение. Ожидаемый тип '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 голосов
/ 17 декабря 2018

Попробуйте эту мутацию:

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],

Каждый раз, когда вы сталкиваетесь с сообщением об ошибке, первое, что нужно предположить, это то, что оно верно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...