循环的MarkLogicJavaScript
我有多种json格式。如何循环浏览json文件以显示开发人员的姓名。谢谢 例如:循环的MarkLogicJavaScript,marklogic,Marklogic,我有多种json格式。如何循环浏览json文件以显示开发人员的姓名。谢谢 例如: doc1.json { "script": "collectionlib.sjs" "version": "1.0.1" "Developers":"Melvin Mckee" } doc2.json { "script": "TechReports.sjs" "version": "1.1.5" "Developers":"Brenton York" } 我可以处理单个json文件 'use
doc1.json
{
"script": "collectionlib.sjs"
"version": "1.0.1"
"Developers":"Melvin Mckee"
}
doc2.json
{
"script": "TechReports.sjs"
"version": "1.1.5"
"Developers":"Brenton York"
}
我可以处理单个json文件
'use strict';
var doc = cts.doc("/doc1.json")
var node = xdmp.toJSON(doc)
node.root.Developers
//Return result: "Melvin Mckee"
但不确定如何构造..循环以返回结果开发人员的名字是“Melvin Mckee”和“Brenton York”
var items=cts.uri(空,
无效的
cts.collectionQuery(“脚本集合”)
)
对于(变量i=0;i
我在Qconsole上得到了空结果 部分问题是
节点.root.developers
的大小写为“d”,而您提供的数据的大小写为“d”。那可能是个打字错误
MarkLogic返回最后一个表达式的值,但for循环不返回值。您要做的是在循环之前声明一个数组变量,在循环期间添加到它,然后返回该变量
试试这个:
let uris =
cts.uris(
null,
null,
cts.collectionQuery("scripts-collection")
)
let devs = [];
for (let uri of uris) {
let doc = cts.doc(uri);
let node = xdmp.toJSON(doc);
devs.push(node.root.Developers);
}
devs
不确定您为items变量分配了什么,但只要items是一个文件路径数组,您的代码就是完美的,例如,如果您的items变量是['/doc1.json','/doc2.json'],它就可以工作。我从Marklogic Qconsole获得空值。它应该返回“Melvin Mckee”和“Brenton York”。嗯,我不熟悉marklogic,试着问另一个问题,为什么marklogic返回null,但是您的for循环非常好,应该可以工作。
let uris =
cts.uris(
null,
null,
cts.collectionQuery("scripts-collection")
)
let devs = [];
for (let uri of uris) {
let doc = cts.doc(uri);
let node = xdmp.toJSON(doc);
devs.push(node.root.Developers);
}
devs