将变量传递给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=条形
- baz=buz
- 因此,"/foo/"+baz+".json"=/foo/buz.json
相关文章:
- 递归使用 eval() 是检查程序执行的好方法吗?
- 为什么忽略了eval()代码中的语法错误
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- Javascript eval()无法处理传递的字符串
- 调用绕过eval()的函数
- Semi-sandboxing Javascript eval
- ES6 模板文字是否比 eval 更安全
- JavaScript 可以在这里使用 eval 吗?
- 如何使用uglifyjs/uglifyjs2解析walk和eval javascript表达式
- 如何使用其他地方指定的访问信息访问嵌套的json对象,而不使用eval或迭代
- 当eval只执行服务器端数据时,在javascript中使用eval是否安全
- 使用eval()定义变量显示未定义的错误
- javascript eval方法语法
- 在Javascript中使用eval的替代方案
- Eval vs execscript
- eval()读取函数参数有多糟糕
- 使用eval()设置全局变量
- 如何使eval'd调试器可访问的javascript代码
- Json和$scope的角度之间的差异$eval应用于JSON字符串时
- 将变量传递给xdmp.eval()