如何在 Apollo Client 的 gql 查询中定义类型?

How can I define type in gql query in Apollo Client?

我的 Apollo Server 有如下定义。

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."

它的工作方式与 GQL 中的任何标量类型相同。只需使用与服务器上相同的输入名称来定义它们(如 MinMaxScreenerInput 在您的情况下)。你不需要在客户端描述它的形状,服务器会为你验证它:)

如果需要参数,请不要忘记添加感叹号 !