Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Marklogic 9中奇怪的xdmp.eval()toObject()问题_Javascript_Marklogic - Fatal编程技术网

Javascript Marklogic 9中奇怪的xdmp.eval()toObject()问题

Javascript Marklogic 9中奇怪的xdmp.eval()toObject()问题,javascript,marklogic,Javascript,Marklogic,所以我有以下问题,我需要更新JSON文档中的数组。它是一个捕获项目设置的文档,项目成员可以读取项目文档,但不能更新它 我需要先阅读文档,但这是一个不同的事务,提取成员数组并继续 现在,我从xdmp.eval()返回的JSON对象找不到数组,直接从cts.doc()返回的JSON对象是否 uri'/projects/12345.json'处的示例项目文档: { "name": "project01", "description": "example project", "id": "12345"

所以我有以下问题,我需要更新JSON文档中的数组。它是一个捕获项目设置的文档,项目成员可以读取项目文档,但不能更新它

我需要先阅读文档,但这是一个不同的事务,提取
成员
数组并继续

现在,我从
xdmp.eval()返回的JSON对象找不到数组,直接从
cts.doc()返回的JSON对象是否

uri'/projects/12345.json'处的示例项目文档:

{
"name": "project01",
"description": "example project", 
"id": "12345", 
"members": [
{
"name": "user01", 
"role": "owner", 
"uid": "234"
}, 
{
"name": "user02", 
"role": "member", 
"uid": "123"
}
] 
}
我的javascript查询:

var pid = 12345;
// uri to project doc
var pUri = '/projects/' + pid + '.json'

// alternative to not lock project doc
var options = {
             "isolation" : "different-transaction"
              }

//var prjObj = xdmp.eval('cts.doc("' + pUri + '")',null,options).toObject()[0]
//var prjObj = xdmp.eval('cts.doc("' + pUri + '").toObject()',null,options)
var prjObj = cts.doc(pUri).toObject()

prjObj.members
按预期返回成员数组,但

// cast eval result to object
var prjObj = xdmp.eval('cts.doc("' + pUri + '")',null,options).toObject()[0]
// cast doc to object inside eval
var prjObj = xdmp.eval('cts.doc("' + pUri + '").toObject()',null,options);
// end code
但是返回的对象找不到成员数组

现在怎么办?

xdmp.eval()
正在返回1个
document-node()对象序列

当您在该序列上调用
.toObject()
时,它将转换为一个包含一个
文档节点()
的数组,然后
[0]
选择该
文档节点()

然后可以使用
.toObject()
将文档节点转换为JavaScript对象:

var prjObj = xdmp.eval('cts.doc("' + pUri + '")',null,options).toObject()[0].toObject()
或者,您可以使用从结果序列中选择第一项,然后将该
document-node()
转换为JavaScript对象

var prjObj = fn.head(xdmp.eval('cts.doc("' + pUri + '")',null,options)).toObject()
然后可以使用
prjObj.members
来寻址members数组