GraphQL-java向查询添加变量

时间:2019-08-23 06:54:56

标签: graphql graphql-java

我是GraphQL的新手。我知道这是一个基本问题,但是希望我尝试多次但失败的人可以帮助我向查询中添加变量:(

在我的查询中,使用以下架构:

type Query {
    ContinentInfo(id: ID): Continent
}

type Continent {
  id  : ID
  name: String
  countries: [Country]
}

type Country {
  id        : ID
  name      : String
  population: Float
}

以下查询已成功执行:

{
    ContinentInfo(id: "continent01") {
        name
        countries {
            name
            population
        }
    }
}

然后,我想在查询中添加更多条件,例如,添加变量“ populationMoreThan”以过滤结果。因此查询看起来像:

{
    ContinentInfo(id: "continent01") {
        name
        countries(populationMoreThan: $populationMoreThan) {
            name
            population
        }
    }
}

,但是当我尝试在架构和查询中添加此变量时,它总是失败。 有人可以给我提供在我的情况下添加变量的示例吗? 另外,看起来我需要将参数值传递给查询吗?现在,我使用graphql.GraphQL.execute(queryString)传递查询字符串。如何在此处传递变量值?

1 个答案:

答案 0 :(得分:0)

最后找到了一种过滤结果的方法。 使用以下内容更新架构:

import Mox
defp chunked_response_to_state(chunk, pid) do
  current_chunk = Agent.get(pid, &Map.get(&1, :chunk_key))
  Agent.update(pid, &Map.put(&1, :csv, current_chunk <> chunk))
end
setup do
   MyApp.ControllerUtilsMock
     |> stub(:chunk_to_conn, fn _, chunk -> chunk |> chunked_response_to_state(agent_pid) end)
    {:ok, %{agent_pid: agent_pid}}
end
test "my test", state do
   build_conn.get(somepath)
   whole_chunks = Agent.get(state.agent_pid, &Map.get(&1, :chunk_key))
end

并查询:

type Continent {
  id  : ID
  name: String
  countries(populationMoreThan: Float = 0): [Country]
}