使用电子商店时来自 ajv 的严格模式警告

Gua*_*gWu 5 javascript frontend jsonschema node.js electron

我想保存object[]使用electron-storewith JSON Schema,在阅读我得到的文档后,JSON Schema代码可以成功执行,但有警告:

strict mode: "items" is 1-tuple, but minItems or maxItems/additionalItems are not specified or different at path "#/properties/todo"
Run Code Online (Sandbox Code Playgroud)

我的代码是:

strict mode: "items" is 1-tuple, but minItems or maxItems/additionalItems are not specified or different at path "#/properties/todo"
Run Code Online (Sandbox Code Playgroud)

我添加了minItemsmaxItems,但警告仍然出现。我检查了几个小时但无法工作。谁能帮我?

顺便问一下我的使用方法是否JSON Schema正确?

您可以electron-store直接安装并执行它node ./xxx.js

谢谢你帮助我。

Rel*_*ual 4

您的架构没有任何问题。

AJV 版本 8 引入了默认开启的“严格模式”。它的目的是防止在编写模式时出错。

items默认值之一是在以元组形式使用时防止不受约束的项目。

如果“items”是一个数组(对于定义元组的模式),但“minItems”和“additionalItems”/“maxItems”关键字都不存在(或具有错误的值),Ajv 还会记录警告:

https://ajv.js.org/strict-mode.html#unconstrained-tuples

我认为,尽管您没有设置additionalItems为 false,但在设置 时仍然限制了所有值maxItems

我将向您提出问题并在评论中提供链接。

在它得到修复之前(如果它得到修复),您可以在初始化 AJV 时使用配置来禁用严格模式的此元素(https://ajv.js.org/options.html#stricttuples

const ajv = new Ajv({ strictTuples: false });
Run Code Online (Sandbox Code Playgroud)