我正在尝试为JavaScript中的角色设置默认功能,如下所示:
declareUpdate();
var sec = require('/MarkLogic/security.xqy');
var pid = 3223704;
var role = 'scc-proj-' + pid + '-member';
sec.roleSetDefaultPermissions("scc-proj-3223704-member",(xdmp.permission("scc-proj-3223704-member", "read")));
这会出错:
[javascript] XDMP-AS: $permissions as element(sec:permission)* -- Invalid coercion: object-node{"capability": text{"read"}, "roleId": text{"12999117528518422097...} as element(sec:permission)
如果我查看它似乎xdmp.permissions()
回馈对象节点,而sec.roleSetDefaultPermissions()
期望一个元素节点。所以似乎有一些类型转换不起作用......
XQuery等效工作正常。
答案 0 :(得分:3)
只需将element
作为第3个可选$output-kind
参数传递给xdmp.permission
:
xdmp.permission("scc-proj-3223704-member", "read", "element");