首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ajv验证JSON超级模式

用ajv验证JSON超级模式
EN

Stack Overflow用户
提问于 2016-12-14 14:13:24
回答 1查看 697关注 0票数 1

我正在尝试使用ajv模块来验证一些输入。我让它使用常规的JSON,但我想验证多个路由,并使用链接数据构建文档,但我不知道如何设置它。下面是我的模式:

代码语言:javascript
复制
 {
      "$schema": "http://json-schema.org/draft-04/hyper-schema#",
      "title": "Questions",
      "type": "object",
      "definitions": {
        "companyId": {
          "type": "string",
          "minLength": 3,
          "maxLength": 20
        }
      },
      "links":[
        {
          "title": "List",
          "href": "/questions",
          "method": "POST",
          "rel": "self",
          "schema": {
            "properties": {
              "companyId": {
                "$ref": "#/definitions/companyId"
              }
            },
            "required": ["companyId"]
          }
        }
      ]
    }

我的密码是:

代码语言:javascript
复制
const schema = require('./schemas/questions.json');
const hyperSchema = require('../schemas/hyper-schema.json');
const Ajv = require('ajv');

const ajv = new Ajv({ allErrors: true, v5: true });
ajv.addMetaSchema(hyperSchema, undefined, true);

const validate = ajv.compile(schema);
const valid = validate(input);
console.log(valid)

我的问题是,一旦我加载了我的模式,我如何告诉ajv链接什么模式来验证?我将有多个路线(链接)与不同的输入验证。

此外,架构设置是否正确?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-15 18:00:42

如果其他人需要这个,我使用了这样一个JSON指针:

代码语言:javascript
复制
const ajv = new Ajv({ allErrors: true, removeAdditional: true, v5: true });
ajv.addMetaSchema(hyperSchema, undefined, true);
ajv.addSchema(schema, 'questions.json');
const valid = ajv.validate({ $ref: 'questions.json#/links/0/schema' }, input);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41144740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档