在marklogic中无法从其他数据库中找到模块

时间:2019-01-12 15:49:43

标签: javascript module marklogic marklogic-9

好的,我有一个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模块吗?

1 个答案:

答案 0 :(得分:2)

文档权限是我想到的第一件事,它还适用于模块,架构,触发器等,而不仅仅是文档。特权第二。模块根绝对也很重要。

但是,上面的xdmp.eval中有一个简单的错字,这是最大的罪魁祸首:该函数接受3个参数,而不是2个。options是第3个,而不是第二个。

应为:xdmp:eval("...", null, options)

HTH!