GraphQL型强制

GraphQL型强制,graphql,coercion,Graphql,Coercion,我目前正在更新一些与GraphQL单元测试相关的文档,我遇到了这句话: “GraphQL在幕后执行某种类型强制。我们需要在模拟数据中模拟这种类型强制。” 例如,它将转换为布尔值。当从B2添加包含位的模拟数据时,应在模拟数据文件中将这些位更改为布尔值,以便单元测试按预期运行 不幸的是,最初写这篇文章的人已经离开了我们的公司,我知道GraphQL进行了某种类型的胁迫,但我很想知道为什么会这样做?特别是在结果强制期间。有人知道这意味着什么吗?来自: GraphQL服务器在准备给定标量类型的字段时,必须

我目前正在更新一些与GraphQL单元测试相关的文档,我遇到了这句话:

“GraphQL在幕后执行某种类型强制。我们需要在模拟数据中模拟这种类型强制。”

例如,它将转换为布尔值。当从B2添加包含位的模拟数据时,应在模拟数据文件中将这些位更改为布尔值,以便单元测试按预期运行

不幸的是,最初写这篇文章的人已经离开了我们的公司,我知道GraphQL进行了某种类型的胁迫,但我很想知道为什么会这样做?特别是在结果强制期间。有人知道这意味着什么吗?

来自:

GraphQL服务器在准备给定标量类型的字段时,必须维护标量类型所描述的契约,如果无法强制值或强制可能导致数据丢失,则必须强制值或生成字段错误

GraphQL服务可能决定允许将不同的内部类型强制为预期的返回类型。例如,强制Int类型的字段时,布尔真值可能产生1或字符串值“123”可能被解析为base-10 123。但是,如果无法在不丢失信息的情况下合理执行内部类型强制,则必须引发字段错误

由于GraphQL服务器的客户端无法观察到这种强制行为,因此强制的精确规则留给实现。唯一的要求是服务器必须生成符合预期标量类型的值


特定于五个内置标量的其他规则可以在它们各自的部分中找到。任何其他标量在这方面的行为都取决于单个服务。

我可能缺少一些上下文,但这些评论对我来说没有意义。结果强制的全部要点是,解析器可以返回一个或多个您正在使用的语言的本地类型,这些类型被强制为特定于GraphQL的类型。如果您的数据源通常返回位类型,并且GraphQL能够正确地将其强制转换为布尔值,那么不清楚为什么您的模拟数据应该是其他类型的数据。感谢您的回复,似乎提供给我的文档一开始就不清楚。