从 marklogic 中删除用户
remove users from marklogic
我有一组用户名,要从marklogic数据库中删除。列表中的某些用户可能存在也可能不存在于数据库中。我尝试使用下面的脚本但是当没有找到用户时它失败了。如何在找不到用户时使脚本 运行 不停止,即继续删除下一个用户而不是出错并停止脚本执行。请帮忙
xquery version "1.0-ml";
import module namespace sec = "http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy";
declare variable $USERS := ("user1","user2","user3");
for $user in $USERS
return $user||'-'||fn:empty((sec:remove-user($user)));
错误如下
[1.0-ml] SEC-USERDNE: (err:FOER0000) User does not exist: sec:user-name = user1
Stack Trace
In /MarkLogic/security.xqy on line 3612
In get-element("http://marklogic.com/xdmp/security", "sec:user", "sec:user-name", "user1", "SEC-USERDNE")
$col := "http://marklogic.com/xdmp/security"
$elem := "sec:user"
$filter := "sec:user-name"
$value := "user1"
$function-error := "SEC-USERDNE"
$filterValue := <sec:user-name xmlns:sec="http://marklogic.com/xdmp/security">user1</sec:user-name>
$outElem := ()
您可以添加一个 where
子句来检查用户是否存在。所以,像这样
xquery version "1.0-ml";
import module namespace sec = "http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy";
declare variable $USERS := ("user1","user2","user3");
for $user in $USERS
where sec:user-exists($user)
return $user||'-'||fn:empty((sec:remove-user($user)));
如果您希望它根据用户是否实际被删除来打印 true 或 false,您可以将该检查放入 if
作为 return
的一部分。
我有一组用户名,要从marklogic数据库中删除。列表中的某些用户可能存在也可能不存在于数据库中。我尝试使用下面的脚本但是当没有找到用户时它失败了。如何在找不到用户时使脚本 运行 不停止,即继续删除下一个用户而不是出错并停止脚本执行。请帮忙
xquery version "1.0-ml";
import module namespace sec = "http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy";
declare variable $USERS := ("user1","user2","user3");
for $user in $USERS
return $user||'-'||fn:empty((sec:remove-user($user)));
错误如下
[1.0-ml] SEC-USERDNE: (err:FOER0000) User does not exist: sec:user-name = user1
Stack Trace
In /MarkLogic/security.xqy on line 3612
In get-element("http://marklogic.com/xdmp/security", "sec:user", "sec:user-name", "user1", "SEC-USERDNE")
$col := "http://marklogic.com/xdmp/security"
$elem := "sec:user"
$filter := "sec:user-name"
$value := "user1"
$function-error := "SEC-USERDNE"
$filterValue := <sec:user-name xmlns:sec="http://marklogic.com/xdmp/security">user1</sec:user-name>
$outElem := ()
您可以添加一个 where
子句来检查用户是否存在。所以,像这样
xquery version "1.0-ml";
import module namespace sec = "http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy";
declare variable $USERS := ("user1","user2","user3");
for $user in $USERS
where sec:user-exists($user)
return $user||'-'||fn:empty((sec:remove-user($user)));
如果您希望它根据用户是否实际被删除来打印 true 或 false,您可以将该检查放入 if
作为 return
的一部分。