使用 Apollo 客户端和 graphql-go 时 Graphql 查询出现“未知类型 Int”错误

问题描述 投票:0回答:3

我有一个用 graphql-go 实现的 graphql 服务器,我在前端使用 Apollo。不带参数的简单查询和使用输入对象类型的突变工作正常,但由于某种原因在查询中传递标量类型参数会返回错误:

[{"message":"Unknown type \"Int\".","locations":[{"line":1,"column":19}]}]

我的使用再简单不过了;在客户端,我的查询是:

export const GET_CLIENT = gql`
  query client($id: Int) {
  client(id: $id) {
    id
    name
  }
}`

在组件中使用如下:

<Query
  query={GET_CLIENT}
  variables={{
    id: 1
  }} />

在后端解析为该字段:

// ClientQuery takes an ID and returns one client or nil
var ClientQuery = &graphql.Field{
Type: ClientType,
Args: graphql.FieldConfigArgument{
    "id": &graphql.ArgumentConfig{
        Type: graphql.Int,
    },
},
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
    return p.Context.Value("service").(*model.Service).FindClientByID(id)
},
}

我尝试过传递输入对象、字符串等,但后端似乎没有满足任何查询参数、标量或其他参数。我尝试过 graphql-go 的 master 和 v0.7.5。我错过了什么吗?非常感谢帮助,这种基本的东西成为如此巨大的阻碍者感觉很奇怪。

go graphql apollo
3个回答
3
投票

正如另一篇文章提到必须从 int 转换为 float 一样,出现此错误是因为 graphQL 架构中设置的类型与您在查询时尝试使用的类型冲突。

它说:“未知类型 Int”

但它真正的意思是:“预期类型为 Float,但得到了 Int”,那么你就去修改错误的地方。


1
投票

我通过将 ID 的变量类型从

Int
更改为
Float

解决了这个问题

0
投票

在 JavaScript 中,有一种数字类型,根据 ECMAScript 规范表示为双精度浮点数。这意味着 JavaScript 中的所有数值都存储为浮点数,即使它们看起来像整数。所以当转换数字类型时转换为Float类型而不是Int

© www.soinside.com 2019 - 2024. All rights reserved.