对象节点到元素节点转换失败了吗?

时间:2015-12-22 16:03:25

标签: javascript marklogic

我正在尝试为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等效工作正常。

  1. 可以在javascript中修复吗?
  2. 作为一种解决方法,我可以从带有xdmp.eval的javascript运行XQuery还是调用?

1 个答案:

答案 0 :(得分:3)

只需将element作为第3个可选$output-kind参数传递给xdmp.permission

xdmp.permission("scc-proj-3223704-member", "read", "element");