我正在为我的电子应用程序使用一个名为electron-store的库
它具有验证配置数据的功能。
我希望要存储在配置文件中的值是一个字符串。我可以通过定义如下模式来实现:
const schema = {
1: {
type: 'string',
},
2: {
type: 'string',
},
3: {
type: 'string',
},
4: {
type: 'string',
},
};
const store = new Store({schema});
config.json文件中的数据:
{
"1": "lorem epsum...",
"2": "epsum lorem...",
"3": "epsum epsum...",
"4": "lorem lorem..."
}
问题是我有成百上千行这样的数据,所以如果我能定义的话,那就太好了
const schema = {
[any_key_name]: {
type: 'string',
},
};
我认为我可以在定义架构时使用“ patternProperties”来实现它,但是我不知道该怎么做。请帮助我。
答案 0 :(得分:1)
您似乎无法根据需要使用electron-store
进行此操作。
医生说以下话:
您应该将架构定义为每个键均为名称的对象 数据的属性,每个值都是一个JSON模式,用于 验证该属性。
https://github.com/sindresorhus/electron-store#schema
这意味着根“模式”不是JSON模式。只有每个KEY的值都是JSON模式。
如果您想使用动态名称,我认为您需要将其嵌套在特定的键名下,并将其验证为单个对象,尽管这可能可能不是与商店合作。
对不起,我对electron-store
并不特别熟悉。
如果您可以为整个商店提供完整的JSON模式...
您可以使用patternProperties
。
如果您不需要检查密钥是否遵循任何特定的正则表达式,则可以使用additionalProperties
,它将覆盖properties
(如果存在)未检查的所有属性。
让我们看看规格:https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.5.6
“ additionalProperties”的值必须是有效的JSON模式。
此关键字确定子实例如何验证对象, 并且不会直接验证即时实例本身。
具有“ additionalProperties”的验证仅适用于子对象
与“属性”中的任何名称都不匹配的实例名称的值, 并且不匹配“ patternProperties”中的任何正则表达式。
作为纯JSON模式,您将看到...
{
"additionalProperties": {
"type": "string"
}
}
您可以使用https://jsonschema.dev轻松进行测试(链接为您提供了示例)