GraphQL 参数的值无效。预期类型'Int
Posted
技术标签:
【中文标题】GraphQL 参数的值无效。预期类型\'Int【英文标题】:GraphQL Argument has an invalid value. Expected type 'IntGraphQL 参数的值无效。预期类型'Int 【发布时间】:2019-05-18 03:04:32 【问题描述】:我正在使用 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'。",
db 中的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"
]
【问题讨论】:
我不是 Ruby 开发人员,但在 NodeJS 中发生了类似的事情,为了解决这个问题,我在解析器函数中将值解析为 Integer,当给出值时 从输入类型定义中,参数abv
需要Integer
类型的值(在create_gin.rb
中定义),但在您的突变示例中,abv
给出了一个String
(abv: "40"
)类型的值,应该是abv: 40
感谢@MrYoshiji 我已经尝试过他的,但请在 OP 中查看我的更新
【参考方案1】:
试试这个突变:
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],
每当您偶然发现错误消息时,首先要假设它是正确的。
【讨论】:
如果我这样做,我会收到一个新错误,抱怨 url 为空。我已经更新了 OP。以上是关于GraphQL 参数的值无效。预期类型'Int的主要内容,如果未能解决你的问题,请参考以下文章