在 marklogic 中找不到来自不同数据库的模块

cannot find a module from a different database in marklogic

好的,我有一个 MarkLogic 9.0.2 数据库,我在其中部署了两个应用程序。比方说 A 和 B。现在我想 运行 从 A 到 B 里面的一些代码,我们可以用 xdmp.eval() 来做到这一点,但是我想要 运行 的代码需要找到一个部署的模块在 B 的模块数据库中。

我似乎无法正常工作。

数据库 B 中的代码 运行 有效:

declareUpdate();
var prj = require('/root/lib/project-lib.xqy');
prj.createProject('giraffe', 'A project about giraffes');

在模块库中找到并运行s 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: declareUpdate();var prj = require('/root/lib/project-lib.xqy');prj.createProject('fromcluey giraffe', 'A project about giraffes from cluey'); -- Module /root/lib/project-lib.xqy not found

谁能告诉我如何从 A 中找到 project-lib.xqy 模块?

文档权限是我首先想到的,它也适用于模块、模式、触发器等,而不仅仅是文档。特权次之。模块根肯定也很重要。

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

应该是:xdmp:eval("...", null, options).

HTH!