无效的 TDE 模板
Invalid TDE template
我的 MarkLogic 数据库由文件夹“专利”中的几个示例文档组成:
- /patents/airless_diving.json
- /patents/smart_racket.json
- /patents/tuning_ukulele.json
- /patents/waterski_drone.json
每个文档看起来像这样:
{
"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':[
可能可以改进文档以指明哪些属性(例如 schemaName
和 viewName
是必需的,哪些是可选的,例如 view-layout
.
我的 MarkLogic 数据库由文件夹“专利”中的几个示例文档组成:
- /patents/airless_diving.json
- /patents/smart_racket.json
- /patents/tuning_ukulele.json
- /patents/waterski_drone.json
每个文档看起来像这样:
{
"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(
在我的案例中,创建 MarkLogic 模板驱动提取的正确语法是什么? 我是否缺少插入 TDE 之前的一些准备步骤?
您的 row 缺少一个 schemaName
属性。
如果将其添加到 rows
数组中的对象,它将验证并插入。
'rows':[
{
'schemaName':'patents',
'viewName':'inventions',
'columns':[
可能可以改进文档以指明哪些属性(例如 schemaName
和 viewName
是必需的,哪些是可选的,例如 view-layout
.