使用MarkLogic版本10.0-4.2,我试图验证一个简单的JSON记录对一个简单的JSON模式。
JSON模式:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"SourceSystemName": {
"type": "string"
},
"BatchDtTm": {
"type": "string"
},
"SubjectArea": {
"type": "string"
},
"DocumentType": {
"type": "string"
},
"LastUpdatedDt": {
"type": "string"
},
"required": [
"SourceSystemName",
"BatchDtTm",
"SubjectArea",
"DocumentType",
"LastUpdatedDt",
]
}
}
查询控制台正在运行的代码:
let jsonRecord = {"SourceSystemName":"ODH","BatchDtTm":"09/17/21 08:51:48:472723","SubjectArea":"Customer","DocumentType":"Preference","LastUpdatedDt":"09/17/21 03:59:53:629707"};
xdmp.jsonValidate(jsonRecord, cts.doc('/schemas/NewSchema.json').toString());
当我运行上面的代码时,我得到错误XDMP-JSVALIDATEBADSCHEMA:无效模式";">
我不太确定我的模式中什么是"无效的"。有人能提供一些关于MarkLogic认为什么是"无效"的见解吗?
$schema
的第二个参数应该是模式文档的URI。
$schema用于验证的JSON模式的URI。
您正在尝试传入字符串化的内容。
试题:
xdmp.jsonValidate(jsonRecord, '/schemas/NewSchema.json');
并确保将模式文档插入Schemas数据库,而不是内容数据库。