javascript - 如何使用 forEach 遍历序列中的数组

标签 javascript arrays sequence marklogic marklogic-9

我正在使用 xdmp.eval 函数在我的最终数据库中搜索并返回一个文档,以在我的协调过程中使用。

let finalDoc = xdmp.eval(
"fn.head(cts.search(cts.jsonPropertyValueQuery('Id',id, 
['exact']),['unfiltered','score-zero']))",
     {'id':id},
     {"database" : xdmp.database("data-hub-FINAL")});

文档作为具有以下结构的序列返回:

{"SourceSystemName":"",
  "BatchDtTm":"06/20/2018 15:05:15",
  "SubjectArea":"Customer",
  "DocumentType":"Registration",
   "Id":"100", 
     "Contact":[
       {"CustomerId":"1",
        "FirstName":"",
        "LastName":"",
        "EmailId":""
       },
       {"CustomerId":"2",
        "FirstName":"",
        "LastName":"",
        "EmailId":""
       }            
     ]
}

我需要使用 finalDoc.Contact.forEach() 遍历 Contact 数组中的每个客户。但是,当我使用 fn.head(finalDoc.toArray()) 或 fn.head(finalDoc.toObject()) 将 finalDoc 序列更改为数组时,我的 forEach 函数失败并出现错误 "Cannot read property ' forEach' 的未定义”。当我只是尝试通过执行 finalDoc.Contact(或 finalDoc[0].Contact)来输出联系人数组时,我得到一个“Null”输出。

如何从序列中获取联系人数组并使用 forEach 遍历它?谢谢!

最佳答案

您拥有正确的棋子,只是顺序错误。 fn.head 不采用数组,因此它对 fn.head(finalDoc.toArray()) 没有影响:您仍然有一个数组。您可以将序列转换为数组,然后使用数组索引:

finalDoc.toArray()[0].Contact.forEach(...)

或者您可以在最初求值的序列上使用fn.head

fn.head(finalDoc).Contact.forEach(...)

关于javascript - 如何使用 forEach 遍历序列中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52786209/

相关文章:

javascript - 如何缩短这个功能?

javascript - 为什么 MongoDb 游标可以像数组一样被索引?

javascript - 按相似属性分组并通过逗号连接它们 javascript - Mysql group concat like

R时间序列数据,每天只有工作日

javascript - jquery 中的文件夹选择器

javascript - 将单词替换为嵌套数组中长字符串中的另一个单词

javascript - 如何通过路由器从 html 表单传递字符串以生成和存储对象?

c++ - 数组旋转有哪些应用?

r - 如何识别R中的序列

python - 值错误: setting an array element with a sequence with Tensorflow