我收到一个错误:
XDMP-ARGTYPE:(err:XPTY0004)local:getrole(xs:unsignedLong($ perm / sec:role-id))|| “ =” || xs:string($ perm / sec:capability)-arg0不是xs:anyAtomicType类型吗?
我不知道怎么了。我正在尝试获取每个用户的权限列表。结果应该是userA和角色列表,userB和角色列表。
let $uris := cts:uris(
(),
(),
cts:and-query(
cts:collection-query("/users")
)
)
return
(:loop for each user & assign permission to variable:)
for $user in $uris
let $perm := xdmp:document-get-permissions(($user))
return
<info>
<user>{$user}</user>
<roles>{(local:getrole(xs:unsignedLong($perm/sec:role-id)) || "=" ||
xs:string($perm/sec:capability))}</roles>
</info>
答案 0 :(得分:1)
很可能local:getrole(xs:unsignedLong($perm/sec:role-id)
返回多个值,这是您尝试使用||
运算符连接序列时遇到的错误。
由于用户可以(并且很可能会)拥有多个权限,因此您也需要遍历这些权限。
for $user in $uris
for $perm in xdmp:document-get-permissions(($user))
...