问题标签 [ajv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - AJV:检查一个属性是否等于另一个属性
通过使用ajv
,我如何引用foo
来验证bar
具有相同的值?
我试过使用(有类似的变化):
但这没有用。
node.js - Json Schema:验证数组
我正在尝试验证一个包含两个键的模式tags
和parameters
,它们旨在成为任意键值对的数组。但是,由于某种原因,我无法为这两个键指定任何验证失败(我正在使用 nodejs 库ajv
)。
这是架构定义:
这是一个测试对象。我在parameters
这里作为一个简单的字符串传递,打算让它验证失败,但它实际上通过了:
这是我用来验证的代码:
functional-programming - 如果不是有效的 JSON,则解析 JSON 并返回 false
如果出于任何原因,不是有效的 JSON,如何返回 false?
javascript - 对象数组的 AJV 模式验证
我正在尝试使用 AJV 模式验证来验证对象数组。下面是示例代码
有什么我在这里想念的吗。我不想在数组定义本身中添加属性对象。
javascript - 嵌套对象的 AJV 模式验证
函数返回看起来像这样的对象:
“答案”对象始终存在。其他字段基于“vehicle_type”。
例如
如果vehicle_type = 1,则有“模型”和“颜色”。
如果vehicle_type = 2,则有“engine_count”、“seat_count”和“wing_count”。
我正在尝试编写 JSON 模式,我将使用它来验证返回的对象。
如果“vehicle_type”为 1,我想将“model”和“color”设置为必需属性。如果“vehicle_type”为 2,则需要“engine_count”、“seat_count”和“wing_count”。
我正在使用 AJV ( https://github.com/epoberezkin/ajv ) 架构验证器。
对我来说,这是有问题的,因为vehicle_type 嵌套在“答案”中,而我想根据需要标记的属性位于父对象上。换句话说,“validation_type”与“model”或“engine_count”不在同一级别。
我已经有几种不同的方法了...我也尝试了 ajv-keywords (switch, if/else/then) 但我没有任何运气
有任何想法吗?
json - JSON模式“开关”不起作用
我正在尝试使用https://github.com/epoberezkin/ajv库来使用switch
JSON 模式 v5 的属性。
我有以下架构,但它不起作用。
需要明确的是,$ref
没有 switch 语句, s 工作得很好。例如,这得到正确验证:
但是第一个模式不起作用,并且“不起作用”我的意思是它甚至不会触发有效/无效。我做错什么了吗?
json - json 对象的 NodeJS 验证库
我需要在我的 NodeJS 应用程序中验证一些对象。我已经使用了一个很棒的库express-validator,它工作得很好,但是现在我需要验证不同的对象,不仅是请求,而且就 express 验证器利用validator
库而言,它又不支持字符串类型以外的类型。
我发现了不同的变体,比如Jsonschema,Ajv
它们提供了很棒的功能,但我需要能够设置错误消息,而不仅仅是捕获异常或从返回对象中解析它。像那样
所以我可以为每个属性设置错误消息。
是否有任何现有的解决方案来实现此功能?
可能的解决方案
我找到了一个很棒的库JSEN,它提供了必要的功能。
recursion - 在 ajv 中创建递归模式
我正在尝试为一个对象创建一个模式,该对象可能包含与原始属性相同类型的属性中的元素。我的意思是这样的:
有没有办法使用 ajv 验证元素的潜在无限递归结构?
javascript - AJV 验证:不一致的 dataPath
我有一个这样的 AJV 架构:
当我针对此架构运行验证测试时,缺少 object_city 的结果是:
但是邮政编码比 minLength 短的结果是:
请注意差异:
- required 验证失败返回空白 dataPath,但 minLength 验证失败返回'.object_zip'作为dataPath
- required 验证失败返回“#/required”作为schemaPath,minLength 验证失败返回“#/properties/object_zip/minLength”作为schemaPath
所以这是我的问题:如何获得一致的错误处理?