1

我在插入模板时遇到问题。当我运行tde.templateInsert它时,它返回 Invalid permission 作为响应,但我在数据库设置中启用了三重索引并向用户添加了权限(同时添加了tde-admintde-view)。

我正在逐步遵循本教程:https ://developer.marklogic.com/learn/template-driven-extraction/

这是整个错误消息:

[javascript] SEC-INVALIDPERM: xdmp:document-insert("/test/myFirstTDE.json", document{object-node{"template":object-node{"context":text{"/Companies"}, .. .}}}, (json:object(<json:object xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" .../>), json:object(<json:object xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance" .../>), json:object(<json:object xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http: //www.w3.org/2001/XMLSchema-instance" .../>), ...), ("TDE", "http://marklogic.com/xdmp/tde")) -- 权限无效

堆栈跟踪在第 8 行未定义在 xdmp:document-insert("/test/myFirstTDE.json", document{object-node{"template":object-node{"context":text{"/Companies"}, . ..}}}, (json:object(<json:object xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001 /XMLSchema-instance" .../>), json:object(<json:object xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www. w3.org/2001/XMLSchema-instance" .../>), json:object(<json:object xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http ://www.w3.org/2001/XMLSchema-instance" .../>), ...), ("TDE", "http://marklogic.com/xdmp/tde"))

在第 58 行的 /MarkLogic/tde.xqy 中 在 template-insert#4("/test/myFirstTDE.json", Document({"template":{"context":"/Companies", "collections":["source1 "], "rows":[...]}}), [{capability:"read", roleId:"16742763111021671912"}, {capability:"update", roleId:"3680293911625886504"}, {capability:"read ", roleId:"3680293911625886504"}, ...], "TDE")

4

1 回答 1

1

我能够重现。处理方式似乎存在问题xdmp.defaultPermissions()。我已经提交了一个错误,其中包含有关如何重现此行为的信息。

同时,您可以通过依赖$permissions参数的一些默认行为来解决此问题:

$permissions在模板文档上设置的任何权限。当提供 null 作为权限参数时,插入的模板将具有默认权限集。并使用null而不是xdmp.defaultPermissions()

tde.templateInsert(
  "/test/myFirstTDE.json" ,
  myFirstTDE,
  null,
  ["TDE"]
)

或显式创建您要应用的权限:

var permissions = [
  xdmp.permission("admin", "read"),
  xdmp.permission("admin", "insert"),
  xdmp.permission("admin", "update")
];
tde.templateInsert(
  "/test/myFirstTDE.json" ,
  myFirstTDE,
  permissions,
  ["TDE"]
)
于 2022-01-18T14:54:40.647 回答