我有一个特定的用例,我们使用几个 JSON 模式来创建表单@jsonforms/core
,并结合使用@jsonforms/angular
( jsonforms.io )。验证按照建议进行ajv
。
为了尽可能通用(我希望每个表单没有自定义代码),我为每个表单构建了单独的数据和 UI 模式。并且在将其发布到 API(在 NestJS 中)时,我再次使用特定模式验证有效负载以实现数据一致性(也使用ajv
),然后再保存到数据库中。
但是,对于一种特定的形式(也可能是未来的形式),值的验证如下。允许发布空表格,但我们想建议/警告用户该表格尚未完全填写。最好带有模态。所以:具体字段有些需要,但不是严格需要。
JSON 模式/JSON 模式表单/AJV 中是否有办法显示警告但允许表单值通过验证?是否有错误处理级别,或者可能为此使用严格模式?
这就是我创建 AJV 的方式,无论是在前端还是后端(TypeScript):
ajv = createAjv({
schemaId: 'auto',
allErrors: true,
jsonPointers: true,
errorDataPath: 'property',
});
数据模式示例(简化),JSON:
{
"type": "object",
"properties": {
"group1": {
"type": "object",
"properties": {
"level1": {
"type": "integer",
"enum": [0, 1, 2, 3, 4, 5, 6]
},
"level2": {
"type": "integer",
"enum": [0, 1, 2, 3, 4, 5, 6]
},
"level3": {
"type": "integer",
"enum": [0, 1, 2, 3, 4, 5, 6]
},
"level4": {
"type": "integer",
"enum": [0, 1, 2, 3, 4, 5, 6]
}
},
"additionalProperties": false,
"required": []
},
"group2": {
"type": "object",
"properties": {
"level1": {
"type": "integer",
"enum": [0, 1, 2, 3, 4, 5, 6]
},
"level2": {
"type": "integer",
"enum": [0, 1, 2, 3, 4, 5, 6]
},
"level3": {
"type": "integer",
"enum": [0, 1, 2, 3, 4, 5, 6]
},
"level4": {
"type": "integer",
"enum": [0, 1, 2, 3, 4, 5, 6]
}
},
"additionalProperties": false,
"required": []
}
}
}
有人可以指出我正确的方向吗?