当前位置: 首页 > 知识库问答 >
问题:

在GraphQL Java中读取通过变量传递的字段参数

步兴为
2023-03-14

我有一个GraphQL操作,它返回一个包含字段的类型。这个字段接受一个我想在数据提取器中读取的参数。

val registry = SchemaParser().parse(
    """
    type Query {
        myOperation: MyType!
    }

    type MyType {
        myField(myArg1: String!, myArg2: String!): Boolean!
    }
    """
)
val wiring = newRuntimeWiring()
    .type("Query") { builder ->
        builder.dataFetcher("myOperation") { env ->
            val myField = env.mergedField.singleField.selectionSet.selections[0] as Field
            val args = myField.arguments.map { it.value }
            println(args[0])
            println(args[1])
            true
        }
    }
    .build()
val schema = SchemaGenerator().makeExecutableSchema(registry, wiring)
val graphQl = newGraphQL(schema).build()
val query = """
    query MyOperation(${"$"}myArg2: String!) { 
        myOperation { 
            myField(myArg1: "myVar1", myArg2: ${"$"}myArg2) 
        } 
    }
"""
val builder = ExecutionInput.Builder().query(query).variables(mapOf("myArg2" to "myVar2"))
graphQl.execute(builder) // Trigger data fetcher.

输出:

StringValue{value='myVar1'}
VariableReference{name='myArg2'}

共有1个答案

陈成济
2023-03-14

没必要这么复杂。如果您在“My Field”的数据提取器中,则可以使用env.getArgument()简单地获取参数的值:

String myArgumentValue = env.getArgument("myArgument");

对于输入类型参数,它将返回一个映射。(见此)。对于标量参数,将返回什么java对象类型取决于底层标量实现的coercing

 类似资料:
  • 问题内容: 如何在JavaScript中通过引用传递变量?我要对3个变量执行一些操作,因此我想将它们放在for循环中并对每个变量执行操作。 伪代码: 做这个的最好方式是什么? 问题答案: JavaScript中没有可用的“通过引用传递”。您可以传递一个对象(也就是说,您可以按值传递对一个对象的引用),然后让一个函数修改该对象的内容: 您可以使用数字索引遍历数组的属性,并根据需要修改数组的每个单元格

  • 问题内容: 我目前正在express.js应用程序中处理handlebars.js。为了使事情保持模块化,我将所有模板都分成了部分。 我的问题 :我找不到通过部分调用传递变量的方法。假设我有一个部分看起来像这样: 假设我用“ myPartial”这个名字注册了这个部分。然后,在另一个模板中,我可以说: 效果很好,部分将按预期渲染,我是一个快乐的开发人员。但是,我现在需要的是一种通过此调用传递不同变

  • 问题内容: 我有一个链接: 触发ajax调用 但是在控制台中,我看到以下内容: 处理了ajax文件,但是POST数据为空,并且没有执行成功操作,因此将其用零发布,并且类未更改 我凝视着……有什么明显的东西吗? 问题答案: 不会自动传递给AJAX回调函数。您可以使用参数告诉jQuery通过它:

  • 问题内容: 我正在使用PhantomJS page.evaluate()进行抓取。我的问题是我传递到Webkit页面的代码是沙盒化的,因此无法访问我的主要幻象脚本的变量。这使得很难使抓取代码通用。 如何将参数推入页面? 问题答案: 我遇到了确切的问题。可以使用一些技巧,因为它也可以接受字符串。 有几种方法可以执行此操作,但是我使用了一个称为的包装器,该包装器接受其他参数以传递给必须在Webkit端

  • 问题内容: 我开始使用Grunt,并希望将变量传递给我通过exec运行的PhantomJS脚本。我想要做的是为脚本传递URL,以从中获取屏幕截图。任何帮助将不胜感激,谢谢! 达伦 咕script声脚本 screenshot.js 问题答案: 命令行参数可通过模块(Module )访问。第一个始终是脚本名称,然后是后续参数 该脚本将枚举所有参数,并将其写到控制台。 在您的情况下,解决方案是 咕unt

  • 问题内容: 有任何想法吗?2天后仍然卡住。 问题答案: 将的结果分配给变量,然后将该变量传递给: 问题是,这需要引用,因为它修改了数组的内部表示(即,它使 当前元素指针 指向最后一个元素)。 的结果不能转换为参考。这是PHP语言的一种限制,出于简化的原因可能存在。