首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么$data引用在本例中不起作用?

为什么$data引用在本例中不起作用?
EN

Stack Overflow用户
提问于 2019-06-20 01:41:28
回答 2查看 189关注 0票数 1

我已经将$data选项设置为true,并尝试使用$data表达式将endDate限制为至少等于startDate的值。此示例应该无法通过验证,但它没有。:(

代码语言:javascript
复制
var Ajv = require('ajv');
var ajv = new Ajv({allErrors: true, $data: true});

var schema = {
  "properties": {
    "filter": { "properties": {
        "startDate": { type: 'string', format:'date'},
        "endDate": { type: 'string', format:'date', formatMinimum: {'$data': '/filter/startDate'}}
  }}
}};

var validate = ajv.compile(schema);

test({filter: {startDate:'2008-09-01', endDate: '2004-09-01'}});

function test(data) {
  var valid = validate(data);
  if (valid) console.log('Valid!');
  else console.log('Invalid: ' + ajv.errorsText(validate.errors));
}

我尝试过各种JSON指针。0/startDate 1/startDate和显示的/filter/startDate,它们都会产生相同的有效结果!回应。

我希望得到一个无效的响应,其中包含一条关于需要最少startDate的endDate的消息,但我得到的是一个有效的!回应。

您可以在https://runkit.com/jcdietrich/5d0a45ced5afb8001c33808b上看到一个正在运行的示例

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-24 22:14:07

基本的ajv包不支持formatMinimum。ajv-关键字是必需的。

代码语言:javascript
复制
var Ajv = require('ajv');
var ajv = new Ajv({allErrors: true, $data: true});
require("ajv-keywords")(ajv)

var schema = {
  "properties": {
    "filter": { "properties": {
        "startDate": { type: 'string', format:'date'},
        "endDate": { type: 'string', format:'date', formatMinimum: {'$data': '/filter/startDate'}}
  }}
}};

var validate = ajv.compile(schema);

test({filter: {startDate:'2008-09-01', endDate: '2004-09-01'}});

function test(data) {
  var valid = validate(data);
  if (valid) console.log('Valid!');
  else console.log('Invalid: ' + ajv.errorsText(validate.errors));
}
票数 1
EN

Stack Overflow用户

发布于 2019-06-20 01:52:49

相对JSON指针中的第一个数字是“要上升的级别”的数量。您可以将此视为在终端中执行cd .. (某种程度上,请阅读下面的RFC链接了解实际工作原理,因为确切的行为取决于您是在数组中还是在对象中)。

在本例中,您希望向上访问一次endDate,然后再向上访问一次properties;总共两次。然后你“进入”startDate,这就是正斜杠的用法...

代码语言:javascript
复制
2/startDate

您可以阅读有关相对JSON指针在this RFC中的工作原理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56673217

复制
相关文章

相似问题

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