Как определить тип в запросе gql в клиенте Apollo? - PullRequest
0 голосов
/ 23 февраля 2020

Мой сервер 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
}

Как определить тип MinMax в клиенте Apollo для отправки переменных для типа 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 Ответ

1 голос
/ 23 февраля 2020

Работает так же, как и любой скалярный тип в GQL. Просто определите их с тем же именем ввода, что и на сервере (например, MinMax или ScreenerInput в вашем случае). Вам не нужно описывать его форму на клиенте, сервер проверит его для вас:)

И не забудьте добавить восклицательный знак !, если требуется параметр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...