Marklogic XDMP-ARGTYPE: (err:XPTY0004) arg0 不是 xs:anyAtomicType 类型?
Marklogic XDMP-ARGTYPE: (err:XPTY0004) arg0 is not of type xs:anyAtomicType?
我收到一个错误:
XDMP-ARGTYPE: (err:XPTY0004) local:getrole(xs:unsignedLong($perm/sec:role-id)) || "=" || xs:string($perm/sec:capability) -- arg0 is not of type 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>
很可能 local:getrole(xs:unsignedLong($perm/sec:role-id)
正在返回多个值,这是您尝试使用 ||
运算符连接序列时遇到的错误。
由于用户可以(并且很可能会)拥有多个权限,因此您也需要遍历这些权限。
for $user in $uris
for $perm in xdmp:document-get-permissions(($user))
...
我收到一个错误:
XDMP-ARGTYPE: (err:XPTY0004) local:getrole(xs:unsignedLong($perm/sec:role-id)) || "=" || xs:string($perm/sec:capability) -- arg0 is not of type 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>
很可能 local:getrole(xs:unsignedLong($perm/sec:role-id)
正在返回多个值,这是您尝试使用 ||
运算符连接序列时遇到的错误。
由于用户可以(并且很可能会)拥有多个权限,因此您也需要遍历这些权限。
for $user in $uris
for $perm in xdmp:document-get-permissions(($user))
...