我正在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"
}
]
}
答案 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],
每次您遇到错误消息时,首先要假设的是正确的。