如何在 Apollo Client 的 gql 查询中定义类型?
Posted
技术标签:
【中文标题】如何在 Apollo Client 的 gql 查询中定义类型?【英文标题】:How can I define type in gql query in Apollo Client? 【发布时间】:2020-06-07 02:49:39 【问题描述】:我的 Apollo 服务器有以下定义。
input MinMax
min:Float
max:Float
input ScreenerInput
fy:Int!
quarter:Int!
ltp:MinMax
eps:MinMax
pe:MinMax
netWorth:MinMax
paidUp:MinMax
reserve:MinMax
netProfit:MinMax
如何在 Apollo 客户端中定义 MinMax
类型以发送 MinMax
类型的变量。直到现在我只做标量类型,所以我的查询很简单。
我的查询类型是screeenedCompanies(criteria:ScreenerInput!):[ScreenedCompanies]
如果我像下面这样直接查询,它可以工作。
screeenedCompanies(criteria:
fy:2075
quarter:2
eps:
min:30
max:40
)
sector
symbol
我想要的是这样查询,以便可以更改变量
query getScreenedCompanies($criteria:<What type should be here ?>)
screeenedCompanies(criteria:$criteria)
sector
symbol
在输入ScreenerInput
作为类型后,我的查询如下所示
query getScreenedCompanies($criteria:ScreenerInput!)
screeenedCompanies(criteria:$criteria)
sector
symbol
我在 apolloplayground 中的变量如下所示
"criteria":
"fy": 2075
"quarter": 4
"ltp":
"min": 345
"max": 400
我收到以下错误
"error":
"errors": [
"message": "Variable \"$criteria\" of required type \"ScreenerInput!\" was not provided."
【问题讨论】:
【参考方案1】:它的工作方式与GQL
中的任何标量类型相同。只需使用与服务器上相同的输入名称定义它们(如MinMax
或ScreenerInput
在您的情况下)。你不需要在客户端描述它的形状,服务器会为你验证它:)
如果需要参数,别忘了加上感叹号!
。
【讨论】:
您好,感谢您的回答。但我仍然无法让它发挥作用。我的query
类型是screeenedCompanies(criteria:ScreenerInput!):[ScreenedCompanies]
。我如何从 apollo 客户端查询这个。MinMax
是我的情况不是必填字段,所以没有!
标记。
但我仍然无法正常工作您遇到了什么错误,您使用的是什么查询?您可以更新您的问题以反映这一点
感谢您的回复。我已经编辑了这个问题。请检查一下。
我明白了。那么,您具体看到了什么错误?在查询中,您需要使用与服务器上相同的输入类型:ScreenerInput!
谢谢。现在我想我已经接近正确但仍然出现上述错误。我已经编辑了这个问题。请检查一下。以上是关于如何在 Apollo Client 的 gql 查询中定义类型?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 GQL 从 React 前端的 Apollo 客户端获取错误
@apollo/client 反应钩子 useQuery() 数据未定义
GraphQL Apollo 客户端 (PhpStorm) 中的格式/Prettyprint gql `template strings`