marklogic - Marklogic Javascript for 循环
问题描述
我有多种 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 返回最后一个表达式的值,但 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
推荐阅读
- c++ - Windows/Cygwin - 无法使用 pybind11 - 出错
- javascript - 通过单击复选框动态更改表格中的文本
- asp.net-mvc - 应用程序池回收后,IIS 8.5 无法为 ASP.Net MVC 页面提供服务
- node.js - 服务器重新启动socket.io socketio-jwt后Angular 6验证客户端
- angular - Angular 6 自定义验证器如何禁止用户将 + 或 - 等特殊字符添加到数字输入中
- ruby-on-rails - 在 gem Bootstrap 4.1.3 Rails 5.1 中覆盖 variables.scss
- android - API 28 中 Fragment 中的 MapFragment 崩溃
- reactjs - 我有我的反应应用程序代码沙箱。如何从沙盒部署
- c# - 使用 C# 从 azure 时间序列洞察中解析 json 事件
- android - 在不显示对话的情况下打开 GPS