【问题标题】:Graphql query erroring with 'Unknown type Int' with Apollo Client and graphql-go使用 Apollo 客户端和 graphql-go 的 Graphql 查询错误,出现“未知类型 Int”
【发布时间】:2018-10-16 16:45:01
【问题描述】:

我有一个用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。我错过了什么吗?非常感谢您的帮助,这种基本的东西会成为如此巨大的障碍,感觉很奇怪。

【问题讨论】:

  • 你有没有想过这个问题?我遇到了一个类似的错误,我的结果是由隐藏在查询中的另一个错误引起的。使用您的查询作为开始,我的错误是 id 参数实际上被命名为其他名称。一旦我修复了我的查询以便其他错误消失了,关于 Int 的错误也消失了
  • 我没弄明白,但我会试试这个,谢谢你的 ping。
  • 自从发表评论以来,我已经打过几次了。在每种情况下,我的查询在其他方面都是错误的。我认为这只是 graphql 工具中的错误报告

标签: go graphql apollo


【解决方案1】:

正如另一篇提到必须从 int 变为 float 的帖子一样,发生此错误的原因是您的 graphQL 架构中设置的类型与您在查询时尝试使用的类型冲突。

意思是:'Unknown type Int'

但它真正的意思是:'预期类型 Float 但得到了 Int',然后你会去改变它错误的地方。

【讨论】:

    【解决方案2】:

    我通过将 ID 的变量类型从 Int 更改为 Float 来解决此问题

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 2020-11-27
      • 2021-10-12
      • 1970-01-01
      • 2020-06-28
      • 2018-03-25
      • 2016-08-31
      • 2019-06-22
      • 2020-06-14
      相关资源
      最近更新 更多