将变量传递给 xdmp.eval()
passing variables to xdmp.eval()
我正在尝试将变量传递到 MarkLogic 8.0.4 xdmp.eval()
,如下所示:
var spo = 'spo-role';
var spoRoleRes = xdmp.eval("var sec = require('/MarkLogic/security.xqy'); sec.createRole(role)",(role, spo),{"database" : xdmp.securityDatabase()})
但我不知道如何将变量传递给安全数据库中我想要 运行 的脚本。
该文档似乎反映了 XQY 文档,请参阅 xdmp.eval-docs
在变量下,文档讨论了 map:map()
不是 js 而是 xqy 概念的对象。 QName
也一样
我尝试了一个序列,一个 JSON 对象,几个版本的 clark 符号,但不知道我应该在这里使用什么命名空间?
问题:如何将变量传递给xdmp.eval()
?
在大多数需要在 xQuery 中使用映射的地方,您可以在 javascript 中使用对象。尽管选项文档很愚蠢,因为它使用 XDMP 进行讨论,但实际的 API 参数定义表明它需要一个对象。
当将一个对象作为第二个参数传递给 xdmp.eval
时,它会扩展它并在您评估的代码中为每个对象创建局部变量 属性。
我提供了一个简单的概念证明来帮助您理解会发生什么:
var data = {
"foo": "bar",
"baz": "buz"
}
xdmp.eval(
"declareUpdate(); xdmp.documentInsert('/foo/' + baz + '.json', {'a':'aaa'} )",
data
)
结果是当前数据库中名为 /foo/buz 的文档。json
为什么?
- 因为我传入了一个叫data的对象。
- 这个对象有两个属性(foo 和 baz)
- 这些变成了两个变量
- foo = bar
- baz = 嗡嗡声
- 因此,"/foo/" + baz + ".json" = /foo/buz.json
我正在尝试将变量传递到 MarkLogic 8.0.4 xdmp.eval()
,如下所示:
var spo = 'spo-role';
var spoRoleRes = xdmp.eval("var sec = require('/MarkLogic/security.xqy'); sec.createRole(role)",(role, spo),{"database" : xdmp.securityDatabase()})
但我不知道如何将变量传递给安全数据库中我想要 运行 的脚本。 该文档似乎反映了 XQY 文档,请参阅 xdmp.eval-docs
在变量下,文档讨论了 map:map()
不是 js 而是 xqy 概念的对象。 QName
我尝试了一个序列,一个 JSON 对象,几个版本的 clark 符号,但不知道我应该在这里使用什么命名空间?
问题:如何将变量传递给xdmp.eval()
?
在大多数需要在 xQuery 中使用映射的地方,您可以在 javascript 中使用对象。尽管选项文档很愚蠢,因为它使用 XDMP 进行讨论,但实际的 API 参数定义表明它需要一个对象。
当将一个对象作为第二个参数传递给 xdmp.eval
时,它会扩展它并在您评估的代码中为每个对象创建局部变量 属性。
我提供了一个简单的概念证明来帮助您理解会发生什么:
var data = {
"foo": "bar",
"baz": "buz"
}
xdmp.eval(
"declareUpdate(); xdmp.documentInsert('/foo/' + baz + '.json', {'a':'aaa'} )",
data
)
结果是当前数据库中名为 /foo/buz 的文档。json
为什么?
- 因为我传入了一个叫data的对象。
- 这个对象有两个属性(foo 和 baz)
- 这些变成了两个变量
- foo = bar
- baz = 嗡嗡声
- 因此,"/foo/" + baz + ".json" = /foo/buz.json