2016-07-13 12 views
0

我正在为将查询GraphQL服务器的应用程序编写客户端代码。在我的代码中的几个地方,我传递的数据最终会变成一个查询变量,因此它需要根据我的模式中的特定GraphQLInputType进行验证。在研究graphql-js提供的一些实用程序时,它看起来像isValidJSValue检查器正是我正在寻找的,and its comments even mention它打算用于这样做。如何使用isValidJSValue在我的客户端代码中验证查询变量?

问题是我没有访问我想验证的JS对象作为JS对象,这是我很确定函数正在寻找。我正在将我的模式(作为npm depdendency)导入为JSON,或者我也在模式表示中使用它。是否有一些其他工具可用于从其中某个来源获取我需要的JS类型,然后使用它来检查我的数据是否使用isValidJSValue?或者还有其他方式可以解决这个问题,我只是没有想到?

回答

0

您可以使用您已经导入使用buildClientSchema这里来构建一个实际GraphQL模式实例的JSON模式:https://github.com/graphql/graphql-js/blob/master/src/utilities/buildClientSchema.js

然后,它应该是看在生成的架构types领域找到一个简单的事情你输入类型,然后在其上调用isValidJSValue

虽然我很好奇 - 为什么在发送之前验证客户端上的值,而不是仅仅依靠服务器的验证呢?

+0

谢谢,工作!为了在我的应用程序中实现“撤消”行为,我需要在几个不同的地方依靠一个对象的形状来构建某种对象的形状。其中一个地方恰好是我将突变发送到服务器的地方,所以不是建立一些其他类型的检查,我只想使用GraphQL给我提供的开箱即用功能。我想我会把它作为一次构建时间检查,或者甚至可能是单元测试的一部分,而不是在运行时执行的任何事情 - 基本上只是对开发人员进行的健全性检查。 – kgoggin