无效的 TDE 模板

Invalid TDE template

我的 MarkLogic 数据库由文件夹“专利”中的几个示例文档组成:

每个文档看起来像这样:

{
  "patent": {
    "title": "Airless SCUBA diving", 
    "inventor": "Greg", 
    "description": "Diving pill that provides airless SCUBA diving for up to 1 hour"
  }
}

我正在尝试创建模板:

    const tde = require ('/MarkLogic/tde');
    
    const inventionsTemplate = xdmp.toJSON(
    {
      'template':{
        'context':'patent',
        'directories':["patents", "another_patents"],
        'rows':[
        {
          'viewName':'inventions',
          'columns':[
          {
            'name':'title',
            'scalarType':'string',
            'val':'../title',
            'nullable':true
          },
          {
            'name':'inventor',
            'scalarType':'string',
            'val':'../inventor',
            'nullable':true
          },
          {
            'name':'description',
            'scalarType':'string',
            'val':'../description',
            'nullable':true
          }
          ]
        }]
      }
    }
    );

tde.templateInsert('/templates/inventionsTemplate.json', inventionsTemplate);

但是出现错误:

[javascript] TDE-INVALIDTEMPLATE: (err:FOER0000) tde.templateInsert('/templates/inventionsTemplate.json', inventionsTemplate); -- 无效的 TDE 模板:TDE-INVALIDTEMPLATENODE:无效的提取模板节点:fn:doc("")/template/array-node("rows")/object-node()

堆栈跟踪 在第 75 行第 6 列: 在 tde.templateInsert('/templates/inventionsTemplate.json', inventionsTemplate);

fn:QName("http://marklogic.com/xdmp/tde","templateURI") = "/templates/inventionsTemplate.json" fn:QName("http://marklogic.com/xdmp/tde","template") = document{object-node{"template":object-node{"context":text{"patent"}, “目录”:数组节点{...},...}}} fn:QName("http://marklogic.com/xdmp/tde","权限") = () fn:QName("http://marklogic.com/xdmp/tde","集合") = () fn:QName("http://marklogic.com/xdmp/tde","testvalid") = map:map() fn:QName("http://marklogic.com/xdmp/tde","permarray") = json:array() fn:QName("http://marklogic.com/xdmp/tde","colsarray") = json:array()

在我的案例中,创建 MarkLogic 模板驱动提取的正确语法是什么? 我是否缺少插入 TDE 之前的一些准备步骤?

您的 row 缺少一个 schemaName 属性。

如果将其添加到 rows 数组中的对象,它将验证并插入。

'rows':[
    {
      'schemaName':'patents',
      'viewName':'inventions',
      'columns':[

可能可以改进文档以指明哪些属性(例如 schemaNameviewName 是必需的,哪些是可选的,例如 view-layout.