I want to save a object[]
using electron-store
with JSON Schema
, after reading the doc of JSON Schema
i get the code can be exec successfully but with warning:
strict mode: "items" is 1-tuple, but minItems or maxItems/additionalItems are not specified or different at path "#/properties/todo"
And my code is :
const Store = require('electron-store')
/** @type import('json-schema-typed').JSONSchema */
const schema = {
todo: {
type: 'array',
items: [true],
minItems: 0,
maxItems: 999,
additionalItems: {
type: 'object',
properties: {
id: {
type: 'number'
},
name: {
type: 'string'
}
}
}
}
}
const todoStore = new Store({ schema })
const todoItem = [{ id: 1, name: '11111' }]
todoStore.set('todo', todoItem)
console.log(todoStore.get('todo'))
const newTodo = [...todoStore.get('todo')]
newTodo.push({ id: 2, name: '22222' })
todoStore.set('todo', prev)
console.log(todoStore.get('todo'))
module.exports = todoStore
i add minItems
and maxItems
, but the warning is still appear. I checkout it out for a few hours but can't work. Can anyone help me?
By the way, i want to ask if i use JSON Schema
in right way?
You could install electron-store
and exec it directly with node ./xxx.js
Thx for helping me.
I want to save a object[]
using electron-store
with JSON Schema
, after reading the doc of JSON Schema
i get the code can be exec successfully but with warning:
strict mode: "items" is 1-tuple, but minItems or maxItems/additionalItems are not specified or different at path "#/properties/todo"
And my code is :
const Store = require('electron-store')
/** @type import('json-schema-typed').JSONSchema */
const schema = {
todo: {
type: 'array',
items: [true],
minItems: 0,
maxItems: 999,
additionalItems: {
type: 'object',
properties: {
id: {
type: 'number'
},
name: {
type: 'string'
}
}
}
}
}
const todoStore = new Store({ schema })
const todoItem = [{ id: 1, name: '11111' }]
todoStore.set('todo', todoItem)
console.log(todoStore.get('todo'))
const newTodo = [...todoStore.get('todo')]
newTodo.push({ id: 2, name: '22222' })
todoStore.set('todo', prev)
console.log(todoStore.get('todo'))
module.exports = todoStore
i add minItems
and maxItems
, but the warning is still appear. I checkout it out for a few hours but can't work. Can anyone help me?
By the way, i want to ask if i use JSON Schema
in right way?
You could install electron-store
and exec it directly with node ./xxx.js
Thx for helping me.
Share Improve this question edited Jul 19, 2021 at 8:28 Relequestual 12.4k7 gold badges52 silver badges87 bronze badges asked Jul 17, 2021 at 10:25 GuangWuGuangWu 4986 silver badges18 bronze badges1 Answer
Reset to default 4There is nothing wrong with your schema.
AJV version 8 introduced "strict mode" which is on by default. It aims to prevent making mistakes when writing schemas.
One of the defaults is to prevent unconstrained items when using items
in tuple form.
Ajv also logs a warning if "items" is an array (for schema that defines a tuple) but neither "minItems" nor "additionalItems"/"maxItems" keyword is present (or have a wrong value):
https://ajv.js/strict-mode.html#unconstrained-tuples
I would argue, that although you haven't set additionalItems
to false, you have still constrained all values when you set maxItems
.
I will raise an issue on your behlaf and link in the ments.
Until it gets fixed (if it gets fixed), you can disable this element of strict mode by using a config when you initialise AJV (https://ajv.js/options.html#stricttuples)
const ajv = new Ajv({ strictTuples: false });
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745331911a4622920.html
评论列表(0条)