не может найти модуль из другой базы данных в marklogic

Хорошо, у меня есть база данных MarkLogic 9.0.2, в которой развернуто два приложения. Допустим, A и B. Теперь я хочу запустить некоторый код внутри B из A, мы можем сделать это с xdmp.eval(), но код, который я хочу запустить, должен найти модуль, развернутый в базе данных модулей B.

Кажется, я не могу заставить это работать.

Выполнение кода внутри базы данных 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: declareUpdate (); var prj = require ('/ root / lib / project-lib.xqy'); prj.createProject ('fromcluey giraffe', 'Проект о жирафах от cluey'); - Модуль /root/lib/project-lib.xqy не найден

Может кто-нибудь сказать мне, как я должен найти модуль project-lib.xqy изнутри A?


person Hugo Koopmans    schedule 12.01.2019    source источник


Ответы (1)


Разрешения на документы были первым, о чем я подумал, что также относится к модулям, схемам, триггерам и т. Д., А не только к документам. Привилегии вторые. Корень модулей тоже может быть важен.

Однако в приведенном выше xdmp.eval есть простая опечатка, которая является самой большой причиной здесь: функция принимает 3 аргумента, а не 2. И options является третьим, а не вторым.

Должно быть: xdmp:eval("...", null, options).

HTH!

person grtjn    schedule 15.01.2019
comment
да это было так просто, было бы неплохо, если бы интерпретатор предупреждал о такой банальной ошибке. - person Hugo Koopmans; 19.01.2019
comment
Проблема в том, что и 2-й, и 3-й аргументы являются хэш-таблицами, поэтому он просто думает, что параметры - это переменные, которые необходимо передать. - person grtjn; 20.01.2019