我正在使用 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/