对象节点到元素节点的转换失败?
object-node to element-node conversion fails?
我正在尝试为 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 工作正常。
- 这可以在 javascript 中解决吗?
- 作为解决方法,我可以 运行 来自 javascript 的 XQuery 和 xdmp.eval 或调用吗?
只需将 element
作为第三个可选 $output-kind
参数传递给 xdmp.permission
:
xdmp.permission("scc-proj-3223704-member", "read", "element");
我正在尝试为 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 工作正常。
- 这可以在 javascript 中解决吗?
- 作为解决方法,我可以 运行 来自 javascript 的 XQuery 和 xdmp.eval 或调用吗?
只需将 element
作为第三个可选 $output-kind
参数传递给 xdmp.permission
:
xdmp.permission("scc-proj-3223704-member", "read", "element");