xdmp.spawn in marklogic javascript



在marklogic中执行xdmp.spawn函数时,如下所示:

var abc = "foo"
xdmp.spawn("/oneplusone.sjs", (xs.QName("abc"), "foo").Object,{result: true})

错误:

 [javascript] JS-JAVASCRIPT: fn.count(Sequence()) -- Error running JavaScript request: ReferenceError: abc is not defined

OnePlusOne.sjs 是我的模块数据库中的一个模块,它只返回变量"abc"的值(这是作为外部传递的字符串"foo"(

你能帮忙解决这个问题吗?另外,请给出一个详细的示例,说明如何将xdmp.spawn与如何将第二个参数作为对象传递一起使用。

下面的代码片段有效:

var name = (xs.QName("abc"), "foo")
xdmp.spawn("/oneplusone.sjs", name.Object,{result: true})

问题是被调用的模块(/oneplusone.sjs(只有一行代码,即变量abc。这适用于 Xquery,但在 Javascript 中,他们希望在被调用的模块中声明变量。另外,请让我帮助我获取被调用的模块中变量的值,因为现在它正在作为对象传递

该函数需要一个 JSON 对象,其中包含引用变量名称的键。在 XQuery 代码中调用命名空间变量更具挑战性,但这不适用于服务器端 JavaScript。为此,您可以执行以下操作:

var abc = "foo"
xdmp.spawn("/oneplusone.sjs", { "abc": abc }, {result: true})

如果你想调用XQuery代码,你可能需要xdmp.keyFromQName。

哼!