我正在尝试上传模板以用于MarkLogic模板驱动提取。我在控制台中使用Javascript(在localhost上)。但是,无论我尝试什么,我在尝试上传时都会遇到同样的错误。错误:" [javascript] SEC-INVALIDPERM:xdmp:document-insert ...."我给了自己所有可能的权限,但我仍然不断收到错误。
'use strict'
declareUpdate();
var tde = require("/MarkLogic/tde.xqy");
var MatchesTDE = xdmp.toJSON(
{
"template": {
"context": "/com.marklogic.client.mapper.MatchesDoc",
"collections": ["com.marklogic.client.mapper.MatchesDoc"],
"rows": [
{
"schemaName": "mapper",
"viewName": "matches",
"columns": [
{
"name": "nrOfDocumentsInNC",
"scalarType": "long",
"val": "nrOfDocumentsInNC"
},
{
"name": "totalNrOfDocuments",
"scalarType": "long",
"val": "totalNrOfDocuments"
},
{
"name": "matchesID",
"scalarType": "long",
"val": "matchesID"
},
{
"name": "uniqueInNC",
"scalarType": "boolean",
"val": "uniqueInNC"
}
]
}
]
}
}
);
tde.templateInsert(
"/MatchesDoc/TDE.json" ,
MatchesTDE,
xdmp.defaultPermissions(),
["com.marklogic.client.autorelationmapper.MatchesDoc"]
);
顺便说一句,如果我使用tde.validate([MatchesTDE]);
验证模板,我会true
。如果我用
tde.nodeDataExtract(
[cts.doc( "com.marklogic.client.mapper.MatchesDoc/2722286.json" )],
[MatchesTDE]
);
它有效。此外,当我在https://developer.marklogic.com/learn/template-driven-extraction处遵循TDE教程时,除了 insertTemplate函数之外,一切都有效。我也有同样的错误。我做错了什么?
答案 0 :(得分:0)
尝试删除运行此代码的用户的所有权限。或者尝试使用空的第3个参数运行tde.templateInsert()
:
tde.templateInsert(
"/MatchesDoc/TDE.json" ,
MatchesTDE,
[],
["com.marklogic.client.autorelationmapper.MatchesDoc"]
);
听起来这是你的问题:
我给了自己所有可能的权限,但我仍然不断收到错误。
用户没有权限,文档具有权限。用户只有在写文档时才有默认权限。
用户的默认权限是分配给用户插入的文档的权限集。默认权限不授予该用户数据库中的任何其他权限。通常,管理员用户没有分配默认权限。
当您为用户分配所有这些默认权限时,最终会在tde.templateInsert()
的第3个参数中添加大量权限,并传递xdmp.defaultPermissions()
。其中至少有一个是无效的,所以你得到SEC-INVALIDPERM错误。