Marklogic Javascript for 循环

Marklogic Javascript for loop

我有多个 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 strict';
  var doc = cts.doc("/doc1.json")
  var node = xdmp.toJSON(doc)
  node.root.Developers

//Return result: "Melvin Mckee"

但不确定如何构建 For..Loop 以返回结果开发者名称是 "Melvin Mckee" 和 "Brenton York"

var items = cts.uris(null,
                    null,
                    cts.collectionQuery("scripts-collection")
           ) 

for (var i = 0; i < items.length;i++){
     var doc = cts.doc(items[i]);
     var node = xdmp.toJSON(doc); 
     node.root.developers
  }

我在 Qconsole 上得到的结果为 NULL。

部分问题是 node.root.developers 是小写 'd',而您提供的数据是大写 'D'。那可能是一个错字。

MarkLogic return 是最后一个表达式的值,但是 for 循环没有 return 一个值。你想要做的是在循环之前声明一个数组变量,在循环期间添加到它,然后 return 该变量。

试试这个:

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