我想创建一个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”。
任何人都可以解释,如何将模块加载到我们自己的模块数据库中,并从库模块或主模块中导入它,然后在任何地方调用该函数?
答案 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