Sangria 没有看到 GraphQL 查询变量

Sangria not seeing GraphQL query variables

当我有这样的查询时:

{
  "query": "mutation { createInventory(name: $name, schema: $schema) }",
  "variables": {
    "name": "i1",
    "schema": "s"
  }
}

我收到错误消息:未定义变量“$name”。

我检查了这些变量是否正确地从 JSON 中提取,它们确实是。可以肯定的是,我在执行查询时尝试显式传递 name 变量:

Executor.execute(
    GraphQLSchema.schema,
    query,
    ctx,
    variables = InputUnmarshaller.mapVars(Map("name" -> "foo"))
)

为什么 Sangria 不识别这些变量?我的命名方式有问题吗?

您缺少 GraphQL 查询本身的 "variable definition" 部分。这是查询的一部分,指示它希望传入的变量类型。

所以这应该可行,前提是我已经猜出变量的正确类型:

{
  "query": "mutation myMutation($name: String, $schema: String) { createInventory(name: $name, schema: $schema) }",
  "variables": {
    "name": "i1",
    "schema": "s"
  }
}

阅读我的文章,The Anatomy of a GraphQL Query