gpt4 book ai didi

javascript - Ajv 关键字和自定义错误消息

转载 作者:行者123 更新时间:2023-11-29 23:30:13 27 4
gpt4 key购买 nike

我已经编写了一个模式,但它似乎没有像我预期的那样有效。我假设我的模式语法有问题但无法弄清楚。我希望在筹款事件完成之前不会看到标题或目标的错误消息,因为只有在筹款事件完成时才需要它们。我尝试了很多组合,但没有一个能按预期工作,这两个是我最接近我需要的组合。

架构尝试一:显示 4 条错误消息、3 条必填错误和 1 条错误说明数据应匹配“then”架构。

const schema = {
required: ['fundraiser'],
if: {
properties: {
fundraiser: { type: 'string' },
},
},
then: {
required: ['title', 'target'],
},
errorMessage: {
required: {
fundraiser: 'Please select an option',
title: 'Please enter a title',
target: 'Please enter a target',
},
},
};

模式尝试两次:显示 2 条错误消息,1 条必填错误和 1 条错误说数据应该匹配“then”模式,这是正确的,但是当我完成筹款事件时,有效变为真,这是我期望的然后查看标题和目标所需的错误。也没有错误有我定义的自定义错误消息。

const scema = {
if: {
properties: { fundraiser: { minLength: 2 } },
then: { required: ['title', 'target'] },
},
then: { required: ['fundraiser'] },
errorMessage: {
required: {
fundraiser: 'Please select an option',
title: 'Please enter a title',
target: 'Please enter a target',
},
},
};

我很确定我的架构有问题,但从文档中不清楚如何使用 if/then 结合使用 ajv-errors 的自定义错误消息。任何帮助将不胜感激!谢谢!

最佳答案

第一个模式的问题是“if”中的子模式是有效的,除非 fundraiser 属性存在而不是字符串。如果您将 type: 'object' 添加到根模式并将 required 移动到“if”子模式中,它可能会像您预期的那样工作。

第二个子模式的问题是第一个在同一个模式对象中没有“if”的“then”被忽略了(除非你使用的 ajv-keywords 实现 if/then/else 与它的实现方式有些不同在 JSON Schema 规范的 draft-07 中定义)和“if”中的子模式即使 fundraiser 属性不存在也是有效的,第二个“then”只有在 fundraiser 存在时才能通过。

关于javascript - Ajv 关键字和自定义错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47632702/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com