Как создать пользовательскую функцию JavaScript и вызывать ее в любом месте в marklogic? - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу создать функцию javascript и загрузить ее в свою собственную базу данных модулей, и я хочу вызвать эту функцию.

Изначально я пробовал ее с помощью функции xquery.Я загрузил функцию xquery в свою собственную базу данных модулей (например, top-songs-mods).Когда я пытаюсь вызвать эту функцию, я получаю следующее исключение.

XDMP-MODNOTFOUND: (err: XQST0059)

Я также добавил разрешения на выполнение, обновление и чтение документа.

После этого, когда я загрузилта же функция xquery для базы данных MODULES (которая есть по умолчанию), я могу вызвать эту функцию.

Я имел в виду этот документ https://docs.marklogic.com/guide/app-dev/import_modules#id_26329

В моем приложении-сервере rootустанавливается в '/', а для модулей устанавливается 'top-songs-mods'.

Может кто-нибудь объяснить, как загрузить модуль в нашу собственную базу данных модулей и импортировать его из библиотечного модуля или основного модуля и вызватьэта функция где-нибудь?

1 Ответ

0 голосов
/ 14 декабря 2018

На этой странице объясняется, как создать простой модуль SJS: https://developer.marklogic.com/learn/sjs/javascript-modules

Я создал локальный файл с именем test.sjs со следующим содержимым:

module.exports= {
  myFunction: test
};

function test() {
 return "test";
}

Используя подобный локонВ соответствии с тем, что вы опубликовали, я помещаю файл test.sjs в базу данных example-modules:

curl --anyauth --user admin:admin -X PUT -T test.sjs "localhost:8123/v1/documents?uri=/test.sjs&database=example-modules"

, а затем выполняю следующий код в консоли запросов на том сервере приложений, в котором модулями являются example-modulesбаза данных:

const test = require("/test.sjs");
test.myFunction();

Он успешно выполняется и возвращает: test

...