Triggers MarkLogic-xdmp:触发器的生成权限

Triggers MarkLogic-xdmp:触发器的生成权限,triggers,permissions,marklogic,privileges,Triggers,Permissions,Marklogic,Privileges,我试图在数据更改时在后端触发一个进程 这是我目前正在使用的一个工作触发器 xquery version "1.0-ml"; import module namespace trgr="http://marklogic.com/xdmp/triggers" at "/MarkLogic/triggers.xqy"; if (xdmp:database() eq xdmp:database("nbcu-test-ml-triggers")) then () else fn

我试图在数据更改时在后端触发一个进程

这是我目前正在使用的一个工作触发器

xquery version "1.0-ml";
import module namespace trgr="http://marklogic.com/xdmp/triggers" 
    at "/MarkLogic/triggers.xqy";


if (xdmp:database() eq xdmp:database("nbcu-test-ml-triggers")) 
   then ()
   else fn:error((), 'NOTTRIGGERSDB', xdmp:database()) ,
trgr:create-trigger(
     "typeahead_modify", 
     "Update Typeahead Document",
     trgr:trigger-data-event(trgr:directory-scope("/triplestore/", "1"), trgr:document-content("modify"),     trgr:post-commit()),
     trgr:trigger-module(
         xdmp:database("nbcu-test-ml-modules"), 
         "/ext/", 
         "sample-trigger.xqy"),
     fn:true(), 
     xdmp:default-permissions(),
     fn:true() ) 
然而,在它触发的模块的末尾,我想调用一个xdmp:spawn函数来执行一些异步处理

我对权限管理非常陌生,但我尝试向权限集中添加
xdmp:privilege
,但没有成功

是否有人可以帮助建议如何将
xdmp:Spawn execute
权限添加到此触发器

谢谢


编辑:我使用mlgradle部署/ext/sample触发器。xqy

运行触发器的用户的范围是导致文档插入/更新/删除/属性更改的用户。此规则的唯一例外是您实际定义用户的数据库联机事件

因此,xdmp:spawn权限必须附加到(直接或间接)附加到上述用户的角色


要进行故障排除,可以将xdm:log(xdmp:get-current-user())添加到触发器模块中,以确保您了解用于调用代码的用户。然后将xdmp:spawn权限添加到该用户的角色之一。

运行触发器的用户的作用域是导致文档插入/更新/删除/属性更改的用户。此规则的唯一例外是您实际定义用户的数据库联机事件

因此,xdmp:spawn权限必须附加到(直接或间接)附加到上述用户的角色


要进行故障排除,可以将xdm:log(xdmp:get-current-user())添加到触发器模块中,以确保您了解用于调用代码的用户。然后将xdmp:spawn权限添加到该用户的角色之一。

get-current-user()
帮助我意识到我没有运行我认为是的用户。。。谢谢你的指导!没问题。很高兴它有帮助
get-current-user()。。。谢谢你的指导!没问题。很高兴它有帮助!