首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MarkLogic触发器声明-我在这方面做错了什么?

MarkLogic触发器声明-我在这方面做错了什么?
EN

Stack Overflow用户
提问于 2015-12-09 07:09:49
回答 1查看 189关注 0票数 2

我正在涉足MarkLogic,这并不容易。最近我一直在尝试触发器,但效果也很差。我希望这里有人能给我一些建议,告诉我我到底做错了什么。

https://docs.marklogic.com/guide/app-dev/triggers#id_66092的MarkLogic社区教程之后,我将我的数据库命名为test,并将其列为自己的触发器数据库。然后,我对测试数据库运行以下查询:

代码语言:javascript
代码运行次数:0
运行
复制
xquery version "1.0-ml"
import module namespace trgr="http://marklogic.com/xdmp/triggers" 
 at "/MarkLogic/triggers.xqy";

trgr:create-trigger("myTrigger", "Simple trigger example", 
  trgr:trigger-data-event(
  trgr:directory-scope("/myDir/", "1"),
  trgr:document-content("create"),
  trgr:post-commit()),
  trgr:trigger-module(xdmp:database("test"), "/modules/", "log.xqy"),
  fn:true(), xdmp:default-permissions() );

它返回14463004257041262559,我可以确认这是正确的URI。

然后,我使用以下查询按照说明定义了/modules/log.xqy

代码语言:javascript
代码运行次数:0
运行
复制
xquery version '1.0-ml';
(: evaluate this against the database specified 
in the trigger definition (test in this example)
:)
xdmp:document-insert("/modules/log.xqy", 
  text{ "
xquery version '1.0-ml';
import module namespace trgr='http://marklogic.com/xdmp/triggers' 
   at '/MarkLogic/triggers.xqy';

declare variable $trgr:uri as xs:string external;

xdmp:log(fn:concat('*****Document ', $trgr:uri, ' was created.*****'))"
}, xdmp:permission('app-user', 'execute'))

然后我确认了它的存在,并与引号之间的文本完全匹配。

但是,当我运行xdmp:document-insert("/myDir/test.xml", <test/>)时,文档被创建了,并且没有发生任何其他事情。当我打开ErrorLog.txt时,它应该附加的文本并不在那里。

我认为这可能是我在错误的位置查找,所以我还添加了fn:doc("/modules/log.xqy"),以便它可以显示它是否运行,但是将新文档插入到正确的目录中并不会促使触发器执行任何操作。

我希望你们中的一个能告诉我我做错了什么,因为这是相当令人沮丧的。我在等待你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-12-09 19:44:46

你说你创建了modules/log.xqy,但是代码引用了/modules/log.xqy。这两个URI确实是不同的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34167848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档