如何使用 isValidJSValue 来验证客户端代码中的查询变量?

How can I use isValidJSValue to validate a query variable in my client code?

我正在为将查询 GraphQL 服务器的应用程序编写客户端代码。在我的代码中的几个地方,我传递了最终会变成查询变量的数据,因此它需要针对我的模式中的特定 GraphQLInputType 进行验证。在查看 graphql-js 提供的一些实用程序时,看起来 isValidJSValue 检查器正是我正在寻找的,and its comments even mention 它旨在用于执行此操作。

问题是我无法访问我想作为 JS 对象进行验证的 GraphQL 类型,我很确定该函数正在寻找。我正在将我的架构(作为 npm 依赖项)导入为 JSON,或者我也在架构符号中包含它。我可以使用其他一些实用程序从这些来源之一获取我需要的 JS 类型,然后使用它来检查我的数据 isValidJSValue 吗?还是有其他我没有想到的方法可以解决这个问题?

您可以使用已导入的 JSON 架构在此处使用 buildClientSchema 构建实际的 GraphQL 架构实例:https://github.com/graphql/graphql-js/blob/master/src/utilities/buildClientSchema.js

然后,在结果模式的 types 字段中查找您的输入类型,然后对其调用 isValidJSValue 应该是一件简单的事情。

不过我很好奇 - 为什么在发送之前在客户端验证值,而不是仅仅依赖于服务器将执行的验证?