代码之家  ›  专栏  ›  技术社区  ›  thichxai

循环的Marklogic Javascript

  •  0
  • thichxai  · 技术社区  · 5 年前

    我有多种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"
    }
    

     'use strict';
      var doc = cts.doc("/doc1.json")
      var node = xdmp.toJSON(doc)
      node.root.Developers
    
    //Return result: "Melvin Mckee"
    

    但不知道如何构造For..循环以获得返回结果开发人员的名称是“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上得到了空结果。

    0 回复  |  直到 5 年前
        1
  •  2
  •   Dave Cassel    5 年前

    部分问题是 node.root.developers

    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