如何创建自定义javascript函数并在marklogic中的任何位置调用它?

时间:2018-12-12 12:11:38

标签: marklogic

我想创建一个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 :(得分:1)

此页面说明了如何创建简单的SJS模块: https://developer.marklogic.com/learn/sjs/javascript-modules

我创建了一个名为test.sjs的本地文件,其内容如下:

module.exports= {
  myFunction: test
};

function test() {
 return "test";
}

使用与您发布的内容类似的curl命令,将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