好的,我有一个MarkLogic 9.0.2数据库,其中部署了两个应用程序。假设A和B。现在我想在A中的B内部运行一些代码,我们可以使用xdmp.eval()
来执行此操作,但是我要运行的代码需要找到部署在B的模块数据库中的模块。 / p>
我似乎无法正常工作。
在数据库B内部运行的代码:
declareUpdate();
var prj = require('/root/lib/project-lib.xqy');
prj.createProject('giraffe', 'A project about giraffes');
在模块库中找到并运行createProject函数...
现在从数据库A中尝试通过xdmp.eval()
来运行它,如下所示:
declareUpdate();
var options = { "isolation" : "different-transaction",
"database" : xdmp.database("data-hub-FINAL"),
"modules" : xdmp.database("data-hub-MODULES")
}
xdmp.eval("declareUpdate();var prj = require('/root/lib/project-lib.xqy');prj.createProject('fromcluey giraffe', 'A project about giraffes from cluey');"
, options);
但是给我:
[javascript] XDMP-MODNOTFOUND:clarifyUpdate(); var prj = require('/ root / lib / project-lib.xqy'); prj.createProject('fromcluey giraffe','关于来自cluey的长颈鹿的项目' ); -找不到模块/root/lib/project-lib.xqy
有人可以告诉我如何从A内部找到project-lib.xqy
模块吗?
答案 0 :(得分:2)
文档权限是我想到的第一件事,它还适用于模块,架构,触发器等,而不仅仅是文档。特权第二。模块根绝对也很重要。
但是,上面的xdmp.eval
中有一个简单的错字,这是最大的罪魁祸首:该函数接受3个参数,而不是2个。options
是第3个,而不是第二个。
应为:xdmp:eval("...", null, options)
。
HTH!