查看GraphQL文档中的自定义标量类型(我正在尝试创建自己的日期类型),我不确定parseValue
和parseLiteral
之间的区别。
http://graphql.org/graphql-js/type/#graphqlscalartype
留档似乎不包括函数应该做什么的任何描述。
有人能告诉我要求是什么吗?我假设serialize
必须将标量序列化为字符串。对吗?我假设parseLiteral是该字符串到类型的反序列化?在我的例子中,日期类型。但是,在示例中,serialize和parseValue是同一个函数,这表明它不是简单的反序列化方法。
当类型的值将作为响应发送到客户端时,将调用serialize
方法。由于输出上的值是JSON格式的,serialize
的返回值可以是任何值。可以是字符串、数字、数组、对象。。。
另外两种方法(parseValue
和parseLiteral
)用于读取输入。
在GraphQL中,有两种从客户端读取输入的方法,一种是在查询中内联,比如:
query {
allUsers(first:10) {
id
}
}
其中,10
是第一个
参数的内联值。由于GraphQL的输入语言不完全是JSON,因此正在解析该值(此处为10
),并将其转换为AST(抽象语法树)。在这种情况下,parseLiteral
开始发挥作用。它输入AST并返回类型的解析值。类型可以像JSON一样复杂,parseLiteral
可以遍历AST并返回JSON。
从客户端读取输入的另一种方法是通过变量:
query ($howMany: YourCustomType) {
users(first: $howMany) {
id
}
}
变量:
{
"howMany": {
"thisMany": 10
}
}
因为变量是纯JSON,所以这里不需要AST,你已经有JSON了。这就是parseValue
发挥作用的地方。它以JSON的形式获取输入,并返回查询解析器应该使用的任何内容。
function parseValue(value) {
let first = value.thisMany;
return first;
}
因此,当您从变量中读取数据时,可能会有不同于内联读取值时的表示形式,但从概念上讲,它们在表示形式上应该是相同的。但是,由于输入的“类型”不同(内联是GraphQL,变量是JSON),因此解析算法可能不同。这就是为什么如果将其定义为输入类型,则需要提供两个单独的方法来读取它们。
问题内容: 我一直认为Java 中的运算符用于验证其两个布尔操作数是否均为,并且该&运算符用于对两种整数类型进行按位运算。 最近我知道,也可以使用运算符来验证其两个布尔操作数是否均为,唯一的区别是即使LHS操作数为false,它也会检查RHS操作数。 Java中的运算符是否在内部重载?还是在这背后有其他概念? 问题答案: <-验证两个操作数 <-停止评估第一个操作数是否为false,因为结果为fa
问题内容: JavaScript中的&和&&有什么区别? 示例代码: 似乎&&是一个逻辑上的“和”,如果两个都为true,则总是为我提供第二个值。 但是什么是&? (顺便说一下,&&在Python中似乎是“ and”;&在Python中似乎是&。) 问题答案: 是按位AND 该运算符期望 两个数字 并重新调整一个 数字。 如果它们不是数字,则将其强制转换为数字。 注意: 在Javascript中,
问题内容: 我正在从Spring 2.5迁移到Spring 3。 他们介绍了一些黑魔法。预期仅在servlet配置文件中声明。 在Spring 2.5中,我刚刚使用,并且在分发服务器servlet配置XML中声明了标记,并使用了要扫描的基本包。 所以,我不知道是什么样的区别,并在servlet配置标签和我有什么可以消除在Spring3配置文件? 问题答案: 声明一般注释,比如支持,等等。 声明了注
问题内容: 我是Go编程语言的新手。 我注意到Go中有一些奇怪的地方:我认为它在Python中使用并替代了,但是当我在Go中使用时,它也是可行的。 和之间有什么区别? 问题答案: 是分配。有关Go中分配的更多信息:分配 和在变量声明中使用时的细微差别。 Go中变量声明的一般形式是: 上面的声明创建一个特定类型的变量,为其添加名称,并设置其初始值。 无论是或可以省略,但不能同时使用。 例如: 被称为
问题内容: 。*是零个或多个次数的任何字符。我试图找到以元音开头的单词,我用过 它给了我所有以元音开头的单词。当我这样做时,也会得到相同的结果。 现在,我正在寻找以元音结尾的单词。我做了 它没有给出任何结果,但是当我这样做时却给出了有效的结果。请解释两者含义上的差异。谢谢 问题答案: 看起来,在Oracle11中,和模式(之前没有任何内容)会生成零宽度的匹配项。所以与被捕获组包含零宽度的图案或分别
问题内容: 简单的问题: php中的’和’有什么区别?什么时候应该使用两者之一? 问题答案: 基本上,单引号字符串是纯文本,几乎没有特殊情况,而双引号字符串具有变量插值(例如)以及转义序列,例如“ \n”(换行符)。 您可以在PHP的手册中了解有关字符串的更多信息。