1

使用 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: Invalid schema "": ""

我不太确定我的架构是什么“无效”。有人可以提供一些关于 MarkLogic 认为什么是“无效”的见解吗?

4

1 回答 1

1

for 的第二个参数$schema应该是模式文档的 URI。

用于验证的 JSON 模式的 $schema URI。

您正在尝试传入字符串化的内容。

尝试:

xdmp.jsonValidate(jsonRecord, '/schemas/NewSchema.json');

并确保将架构文档插入到架构数据库中,而不是内容数据库中。

于 2021-09-23T19:50:09.930 回答