繁体   English   中英

根据示例 JSON object 验证 GraphQL 架构

[英]Validate GraphQL Schema against a sample JSON object

我想根据示例 JSON 文档验证 Z3540F3F3F751F2A6FD0584DD35F836C32AZ 架构,示例 JSON 文档是否具有所有必需的字段。

正如您从下面看到的 Graphql 架构idname是必填字段,示例 JSON object 也具有这些属性。 在这种情况下,理想validateMySampleJSON(schema, sampleJSON)应该返回 true。

import {
  GraphQLID,
  GraphQLNonNull,
  GraphQLObjectType,
  GraphQLSchema,
  GraphQLString,
} from 'graphql';

const RootQuery = new GraphQLObjectType({
  name: 'Book',
  fields: () => ({
    id: { type: GraphQLNonNull(GraphQLID) },
    name: { type: GraphQLNonNull(GraphQLString) },
    genre: { type: GraphQLString },
  }),
});

const schema = new GraphQLSchema({
  query: RootQuery,
});

const sampleJSON = {
  'id': '1',
  'name': 'Awesome Book',
};

const isValid = validateMySampleJSON(schema, sampleJSON);

console.log(isValid);  // true


const anotherSampleJSON = {
  'id': '1',
  'genre': 'mystery'
};

const isValid = validateMySampleJSON(schema, anotherSampleJSON);

console.log(isValid);  // false

如果您正在寻找使用 GraphQL 工具的解决方案,那么截至今天,答案是否定的。 我没有看到任何开箱即用的验证 function。 但是,您可以使用其他工具的组合来实现此目的。

  1. 您可以使用graphql-2-json-schema package 将 GraphQL 架构覆盖到 JSON 架构。
  2. 拥有 JSON 架构后,您可以使用jsonschema package 加载架构并根据它验证数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM